                          ==========================
                          R E L E A S E    N O T E S
                          ==========================

                QLogic Advanced Server Program (QLASP) Driver
                                     for
                Windows Vista, Windows 7, Windows 8, Windows 8.1
                  Windows Server 2008, Windows Server 2008-R2
                  Windows Server 2012, Windows Server 2012-R2
                                    X86, X64

                  Copyright (c) 2008-2014 Broadcom Corporation
                             All rights reserved.

                  Copyright (c) 2014 QLogic Corporation
                             All rights reserved.

Version 2.0.3 March 23, 2014
----------------------------

1. CQ78699: QLASP folder does not get deleted after uninstall umbrella installer 

   Problem: The user cannot delete the folder that qaspun was started from after
            the uninstallation completes.

   Cause:   The qlasp uninstaller, qlaspun.exe, created a cmd windows to
            delete the performance counters manifest and did not close it
            when it terminated.
            
   Change:  Changed the switch used to start the cmd window from /K to /C.
            
   Impact:  Only effects deleting the directory where qlaspun.exe is run from
            before restarting the system, which is required after running
            qlaspun.

Version 2.0.2 December 3, 2014
-------------------------------

1. CQ76896: Unable to delete team when SP2 and SP3 NX2 team present

   Problem: When both basp and qlasp were installed on a system, qlogic control
            suite would display a "Failed to commit team configuration" error
            when deleting a team.

   Cause:   The qlasp notifier was not changing the qlogic bindings when creating
            or deleting a basp team.
            
   Change:  The qlasp notifier was modified to change the qlogic bindings when
            creating or deleting a team.
            
   Impact:  This change applies to all team types on systems with both basp
            and qlasp installed.

Version 2.0.1 November 17, 2014
-------------------------------

1. CQ76638: QLASP triggers to reboot host right after create the NX2 team
   CQ76649: QLASP team driver not install on the first instance after reboot
   CQ76655: Team creation is not working on Windows2008_x86 with
            Umbrella v18.00.5.5

   Problem: The qlasp driver would not uninstall cleanly and display a
            "Unknown [un]installation failure." message. Subsequent attempts
            install qlasp and create a team would result in erratic behavior.

   Cause:   There was a hard coded string the qlasp notifier that was not
            updated to use the new qlasp registry path and was still using
            the old basp registry path.
            
   Change:  Updated the qlasp registry path in the qlasp notifier to use the
            new qlasp path.
            
   Impact:  This problem was only seen when installing qlasp on a system that
            still had basp installed.

* Note: The driver is now cross signed using MSCV-VSClass3.cer.

Version 2.0.0 August 28, 2014
-----------------------------

1. Rebranded Broadcom Basp driver package to Qlogic Qlasp.

Version 1.6.18 July 28, 2014
-----------------------------

1. CQ74337: SPB Bugcheck due to D1 panic in BASP driver 

   Problem: Basp bugchecked when trying to free memory allocated for a receive
            nbl context.

   Cause:   The nbl was returned to basp on a different path and the memory
            had already been freed (this is a bug in the msft stack). When ndis
            dereferenced the context pointer in the nbl, it bugchecked. 
            
   Change:  A workaround was implemented in basp to validate the nbl context
            before calling ndis to free it.
            
   Impact:  This problem only happens with slb teams that have toe enabled.

Version 1.6.17 July 18, 2014
-----------------------------

1. CQ74222: BASP network traffic stop when the unplug and replug the peer's
            network cable

   Problem: This problem happens on w2k8-sp2 hyper-v vms running on a w2k8-sp2
            host system. The vm is configured to use a hyper-v virtual adapter
            that is a slb team configured with 1-primary and 1-standby nic. The
            problem is that all clients connected to the vm will lose network
            connectivity to the vm when link goes down on one of the remote
            clients connected to the vm.

   Cause:   When the remote client's cable was disconnected from the switch,
            the switch would flood packets sent from the server to the 
            disconnected client to other ports on the switch. The inactive 
            standby nic would receive these packets and indicate them to the 
            stack. This would cause the w2k8-sp2 stack to stop responding to
            to remote clients.
            
   Change:  Basp was changed to not indicate packets received on the standby
            nic if it is inactive.
            
   Impact:  This change only applies to slb teams with a standby nic, primarily
            when the standby nic is configured in promiscuous mode.

Version 1.6.16 May 16, 2014
-----------------------------

1. CQ73937: Failover is not working for BASP in case of 3rd Party Adapter 

   Problem: Network connectivity is lost when a failover happens on a slb team
            configured with 1-primary nic and 1-standby nic, and the standby
            nic is a third party nic.

   Cause:   This problem happened because basp is unable to reprogram the mac
            address of third party nics with the team's mac address. Basp can
            only reprogram the mac address on Broadcom nics.
            
   Change:  Basp was changed to use the third party nic's mac address when
            failing over and not the team's mac address.
            
   Impact:  This change will affect networks that require the team's mac
            address to always be active, such as static mac to ip address
            dhcp assignment or pxe boot, since third party nics are unable
            to assume this address.

Version 1.6.15 April 16, 2014
-----------------------------

1. CQ73507: Ping from VM to host failed after run live migration

   Problem: A customer reported that pings from a vm to the local host
            would fail when the vm was live migrated to a new host.

   Cause:   The source mac address of the vm is not being deleted from the
            list of mac addresses basp filters as loopback frames when the
            vm was migrated to a new host.
            
   Change:  Basp was changed to not discard vm loopback frames. 
            
   Impact:  This problem was first introduced in basp6-1.6.10. This change only
            affects slb teams used as a hyper-v virtual network adapter. 

Version 1.6.14 January 20, 2014
--------------------------------

1. CQ72462:  System bugchecked 0x80 with basp shown waiting for spinlocks in the
             stacks.

   Problem:  The system deadlocked when two basp threads each attempted to 
             acquire two spinlocks but in reverse order from each other.
             
             For example, the system will deadlock when thread_1 acquires
             spinlock_a and requests spinlock_b, while thread_2 acquires
             spinlock_b and requests spinlock_a.

   Cause:    A change in basp6-1.6.10 to support multiple source mac addresses
             that occur when running hyper-v added the deadlock. The deadlock
             would happen when one thread was processing an inbound arp or ndp
             packet, while another thread was aging out an entry in basp's
             internal arp cache.

   Change:   To fix the problem, one of the problem threads was changed to not
             hold both spinlocks at the same time. For example, thread_1
             acquires spinlock_a, then releases spinlock_a, then requests
             spinlock_b and finally releases spinlock_b. This change removes
             the deadlock from the driver.
            
   Impact:   This deadlock was first introduced in basp6-1.6.10 and is contained
             in all subsequent drivers up to this release. It does not happen in
             earlier drivers.
   
             This bug can occur with any team type with either ipv4 arp or 
             ipv6 ndp packets. Also, hyper-v vm do not need to be active for
             this problem to happen. 

* Other changes: Changed copyright to include 2014.

Version 1.6.13 December 10, 2013
--------------------------------

1. CQ71966: 5718 LOM link failures in HS23 blade 

   Problem: The team's link status is shown as down even though the link status
            is up on all the nics in the team when rebooting a system.

   Cause:   There is a race condition between pausing the virtual miniport
            (team) and receiving a link status change from an underlying
            miniport in the team. Basp blocks link status changes when a virtual
            miniport is in the paused state.  If a link status change is
            received when the miniport is in the paused state, basp will not
            forward the change to ndis. This will cause the link status shown by
            ndis to be out-of-sync with the team's link status.

   Change:  Basp was modified to refresh the virtual miniport's link status when
            it exits the paused state and restarts. This re-synchronizes the
            virtual miniport's and ndis's link status in cases where the link
            status has changed while the virtual miniport has paused.
            
   Impact:  This change applies to all team types.

Version 1.6.12 September 23, 2013
---------------------------------

1. CQ71068: Link status is down when windows comes up after reboot.

   Problem: Regression of cq69182.

   Cause:   Internal link status not updated correctly on restart.

   Change:  Internal link status is resynchronized with miniport on restart.
            
   Impact:  Impacts all team types.

Version 1.6.11 September 13, 2013
---------------------------------

1. CQ70793: System Crash (BSOD) observed during Sockdie stress test running on
            SLB Team.

   Problem: A miniport driver in the team caused a bsod while being reset by 
            ndis.

   Cause:   Connections were still offloaded during the miniport reset. 

   Change:  Basp was changed to upload all connections before ndis resets the
            miniport driver.

   Impact:  Impacts slb teams that are toe capable.

* Changed vmqs from enabled to disabled by default. The user can selectively
  enable or disable vmqs in all teams by adding the following REG_DWORD entry
  to the registry.

    \HKLM\SYSTEM\CurrentControlSet\Services\Blfp\Parameters\EnableVmqs

  Setting the value of the above registry entry to 1 will enable vmqs, while
  setting the value to 0 will disable vmqs. If the key is not present, vmqs
  will be disabled in all teams.

Version 1.6.10 July 22, 2013
----------------------------

1. CQ69805: Dual SP's rebooted unexpectedly with NMI_HW_Failure on 5709C BASP
            on stack.
   
   Problem: The system is generating an NMI, causing a bsod because basp is
            stuck in a long loop causing the thread and system to hang.

   Cause:   Basp has received a NDP packet with an invalid option.

   Change:  Basp was modified to workaround this problem by ignoring NDP
            options with an invalid option length.

   Impact:  Impacts all team types on networks with ipv6 packets.

Version 1.6.9 May 20, 2013
--------------------------

1. CQ69182: SLB or GEC team (with ONLY 1 adapter) link is down when windows
            comes up after reboot. 
   CQ69167: Connection speed drops when Windows comes up after reboot. 

   Problem: One of the nics in the team is internally disabled when it should
            be enabled.

   Cause:   A nic would not be added to the team when it was restarted if the
            link status change was received before the restart was complete.

   Change:  Basp was changed to manually indicate the current link status of
            the nic when the nic is restarted.
             
   Impact:  This race condition was present in previous versions of basp, but
            it was not seen until Windows 2012. Impacts all team types.

Version 1.6.8 May 3, 2013
--------------------------

1. CQ68884: Link down will show up on the teaming interface with certain steps
            of teaming configuration steps.

            Same as CQ67893 except only occurs on Windows 2012.

   Problem: If the last vnic is disabled while the standby nic is disabled,
            and then the standby nic is reenabled while the vnic is disabled,
            then no nics in the team will become active.
    
   Cause:   One of the basp threads blocked the reenumeration of bindings
            when the team was reenabled.

   Change:  A function in the thread blocking the reenumeration was changed to
            not execute when reenumerating (specifically pausing) nics in a
            team.
             
   Impact:  This change impacts all slb teams.

Version 1.6.7 March 1, 2013
---------------------------

1. CQ67893: Link down will show up on the teaming interface with certain steps
            of teaming configuration steps.

   Problem: If the last vnic is disabled while the standby nic is disabled,
            and then the standby nic is reenabled while the vnic is disabled,
            then no nics in the team will become active.
    
   Cause:   1) The team was not failing over to the standby nic if the team
            was started and only the standby nic was enabled.

            2) If the standby nic was enabled while the vnic was disabled,
            only the standby nic would be bound to the team. Other nics in the
            team, even if enabled, would not be bound to the team when the
            vnic was reenabled.

   Change:  1) Basp was changed to failover to the standby nic when the team is
            started and the standby nic is the only nic in the team.

            2) Basp was changed to request the nic bindings be reeumerated
            if the team is started and all nics are not bound to the team
            within 10seconds.

   Impact:  This change impacts all slb teams that have a standby nic, eg.
            slb, slb-afd, slb-ll, slb-ll-afd.

Version 1.6.6 February 13, 2013
-------------------------------

1. CQ67769:  bxnd60a!send_nbls_single_qgrp+1e9 

    Problem: A bsod occurred when the miniport attempted to send a vmq 
             nbl before it had been completely configured for vmqs.

    Cause:   Basp put a miniport on the ready list before completing the vmq
             configuration for that miniport. This caused a vmq send nbl
             to be forwarded to a miniport with an incomplete vmq configuration.

   Change:   Basp was modified to complete the vmq configuration before placing
             a miniport driver on the ready list.

   Impact:   Impacts all team types with vmqs enabled.

Version 1.6.5 January 29, 2013
------------------------------

1. CQ67364: bxnd60a!init_q+50; System asserts when rebooting with VMQs enabled
            in a team.
            
    Cause:  Basp could issue two vmq allocation complete oids for the same vmq
            to the miniport.

   Change:  Basp was modified to not issues a vmq allocation complete for vmq
            when restarting a paused miniport when ndis had allocated a vmq,
            but not completed the vmq.

   Impact:  Impacts all team types with vmqs enabled.

Version 1.6.4 October 29, 2012
------------------------------

1. CQ65271: Man file does not get removed after uninstallation.

   Cause:   The basp uninstaller was unloading the performance counters, but
            not deleting the .man file when the unload completed.

   Change:  Basp was changed to delete the .man file after unloading the 
            performance counters successfully.

   Impact:  This problem has been in basp since wmi support was added in
            basp6-1.5.4.

2. CQ65867: 5719 PCI MAC address set to null 00-00-00-00-00-00 when using LAG in
            PCI slots 1-4

   Cause:   An unexpected pnp event to reinitialize the team was occurring
            before the team had completed its initialization for the first time.
            This caused the team to be initialized before the team's mac address
            had been assigned.

   Change:  Basp was changed to ignore the pnp event to reinitialize the team
            while another thread is still initializing the team.

   Impact:  This race condition has been in basp for many years and applies to
            all team types.

Version 1.6.3 August 16, 2012
-----------------------------

1. CQ65147: bxnd60a!vmq_set_request+25c;Assert is seen on the mp driver while
            VMs are bound to team

   Cause:   The NxII miniport was asserting because a vmq was being freed while
            a vmq filter was still set on the vmq. Vmq filters should be cleared
            before a vmq is freed. 

            The vmq was being freed because basp was pausing the miniport.
            The bug was that there was a small window in basp where the vmq
            filters on the miniports in a team could become out of sync with
            each other.

   Change:  The vmq lock used to synchronize the miniport vmq settings was
            moved to close the window where the settings could become out of
            sync. 

   Impact:  This problem only applies to vmq capable teams configured as
            a virtual adapter in hyper-v.

Version 1.6.2 August 03, 2012
-----------------------------

1. CQ64982: RSC does not function in latest basp6 driver in Windows 2012
            server

   Cause:   This is a new feature in windows 8.

   Change:  Added support to basp for this feature.

   Impact:  The change applies to all basp configurations.

Version 1.6.1 July 26, 2012
---------------------------

1. CQ64852: Unable to install basp driver in win2k8-sp2-x86
   CQ64861: The revised BASP driver 1.6.0 results in yellow bang in DM after
            creating team in W2K8sp2 x86 or Vista sp2 x86. 

   Cause:   This problem is caused by a change in the wdk.

            The win8 wdk now imports/exports the function NdisEqualMemory() by
            default, and does not inline this function. Vista-sp2-x86 and
            w2k8-sp2-x86 os's do not export this function and so the function
            remains unresolved. Since the function cannot be imported, the os
            will not load basp. Newer os's, such as w2k8r2 and win8 do export
            this function, so basp loads correctly on these os's. 
            
   Change:  Basp was changed to allow NdisEqualMemory() to be inlined as in
            previous releases that did not use the win8 wdk.

   Impact:  The change applies to all basp configurations, but the change is
            minor since functionality is unchanged.

Version 1.6.0 July 24, 2012
---------------------------

1. CQ63049: BASP v1.5.3: the VMQ doesn't work in Win8. 

   Problem: Vmq's don't work in Windows 8

   Cause:   Basp 1.5.x is a ndis 6.20 driver. Windows 8 supports vmqs only on
            Ndis 6.30 drivers.
            
   Change:  Support for Ndis 6.30 was added to basp.

   Impact:  Impacts most offloading features on slb teams, such as LSO, XSUM,
            and VMQS.

Other Notes:

* The build environment was changed to use the Win8/VS11 wdk.
* The driver is now signed using the brcm cert when released, and is no longer
  test signed.
* The dvl log, basp.dvl.xml, is now included with the driver package. This file
  is only needed for whql certification.

Version 1.5.5 June 6, 2012
--------------------------

1. CQ63544: The basp driver is yellow bang'd in DM when creating a team in 
            Win2k8-SP2, x86 and x64

   Problem: W2k8 will not load basp6-1.5.4.

   Cause:   The windows api used to implement cq56659 is not supported on
            w2k8, it is only supported on os's >= win7, eg. >= w2k8-r2.
            
   Change:  Basp, basin and baspun were changed to dynamically import the api
            only on os's >= win7.

   Impact:  The custom performance counters added in cq56659 are now only
            available on os's >= win7 such as w2k8-r2, and are not available on
            w2k8 or w2k8-sp2.

Version 1.5.4 May 15, 2012
--------------------------

1. CQ56659: Add WMI Support

   Problem: Perfmon and typeperf do not natively display network statistics for
            a virtual miniport driver.

   Cause:   Ndis 5.x acted as a proxy for virtual miniport drivers on
            statistic queries from applications such as perfmon. This allows
            queries for the network statistics from the team to be monitored
            by perfmon and typeperf in w2k3 and xp. 
            
            This behaviour changed starting with w2k8. The Ndis 6.x
            documentation claims to behave similarly regarding ndis acting as a
            proxy for statistic queries to network drivers, but for unknown
            reasons, this does not work with perfmon or typeperf when querying
            virtual miniports. This problem shows itself in perfmon and typeperf
            when they do not list instances of virtual miniport drivers as
            network objects that can be queried.

   Change:  Support for custom performance counters was added to basp. After
            basp has been installed successfully, a list of basp
            performance counters will be found when adding counters in perfmon
            under the name "Basp General Statistics".
            
   Impact:  Applies to all team types.

2.  CQ61777: Page fault in BASP Driver 

    Problem: A customer reported a bsod caused by basp6-1.3.27 generating a
             page fault.

    Cause:   Basp paged faulted when trying to free a receive context on the
             L4 path, but the receive context had already been freed.

    Change:  Basp was changed to detect and handle a null receive context.

    Impact:  This change only effects teams that are L4 offload capable.

Version 1.5.3 December 19, 2011
-------------------------------

1. CQ60396: There are 5 "No Descriptions" under the advanced tab in device
            mgr for the basp driver

   Problem: The registry entries added to baspm.inf for change 1. in
            basp6-1.5.2 did not contain a description.

   Cause:   The description was not included when basp6-1.5.2 change 1. was
            made.

   Change:  The registry entries were changed to a type that does not require
            a description.

   Impact:  This is an inf change only. This change is cosmetic and does not
            change basp.sys.

Version 1.5.2 December 15, 2011
-------------------------------

1. CQ48775: RSS does not distribute the CPU Utilization evenly on 8 proc systems.

   Problem: A maximum of 4 processors are used by basp to process network
            traffic.

   Cause:   The keyword *MaxRssProcessors was not present in virtual miniport's
            registry. 

   Change:  The keyword *MaxRssProcessors was added to baspm.inf with a default
            value of 65525.

   Impact:  This change effects all team types on systems with more than 4
            processors. Only the inf was changed to fix this problem; the basp
            driver was not changed.

* Fixed typo in setting OID_GEN_CURRENT_PACKET_FILTER.

Version 1.5.1 November 28, 2011
-------------------------------

1. CQ: Vmq's did not work on NxI nics

   Problem: Ndis would close vmqs when starting a vmq capable team with NxI
            nics.

   Cause:   Some shared memory usage types used only with vmqs would fail
            with a resources error on allocation.

   Change:  Implemented workaround to change shared memory allocation usage
            when the failure happened.

   Impact:  This change only applies to vmq capable slb teams with at least one
            NxI nic in the team and the team is used in hyper-v.

Reminder:   The following registry entries must be set to enable vmqs in
            1) windows, 2) a team, and 3) a miniport that is in a team.

            1. To enable vmqs in windows, add the following registry entries.
               This registry entry must be present when the system is booted
               to take effect.

                Windows Registry Editor Version 5.00

                [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\
                    VMSMP\Parameters]
                "BelowTenGigVmqEnabled"=dword:00000001

                [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\
                    VMSMP\Parameters]
                "TenGigVmqEnabled"=dword:00000001

            2. To enable vmqs in a slb team with more than one load balancing
               nic, change the team number (here it is 1) to the team number of
               the that you want to enable vmqs on and add the following
               registry entry.
               
               This registy entry can be added after a team has been created,
               but before the hyper-v virtual adapter using the team has been
               created.

                Windows Registry Editor Version 5.00

                [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
                    Blfp\Parameters\1]
                "HyperVMode"=dword:00000001

            3. To enable vmqs in a miniport driver that is in a team, change
               the instance number (here it is 26) to a nic that is in the team
               and set the following registry entry. Do this for each nic in
               team.

               This registy entry can be added after a team has been created,
               but before the hyper-v virtual adapter using the team has been
               created.

                Windows Registry Editor Version 5.00

                [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
                    {4D36E972-E325-11CE-BFC1-08002BE10318}\0026]
                "*RssOrVmqPreference"="1"

Version 1.5.0 November 10, 2011
-------------------------------

1. CQ51454: Add BASP-VMQ support to BASP6

   Problem: Basp does not support vmqs.

   Cause:   This is a new ndis feature.

   Change:  Vmq support was added to basp. For teams with more than one load
            balancing nic, the following registry variable must be added to
            enable vmq support on these team configurations.

            \HKLM\SYSTEM\CurrentControlSet\Services\
                Blfp\Parameters\{team_id}\HyperVMode

            This registry parameter is of type REG_DWORD, setting this registry
            variable to 1 enables vmqs and setting it to 0 disables vmqs. This
            registry entry only impacts teams with more that 1 load balancing
            nic and is not necessary for teams with only 1 load balancing nic.

            This registry entry must be set manually until bacs and baspscfg are
            updated to provide an interface for setting this registry entry. To
            manually add this entry, the team must be created first and then the
            registry entry added. After adding the entry, the system must be
            rebooted in order for basp to read and use the registry entry. The
            registry entry will remain present until the team is deleted.

   Impact:  Impacts slb teams. All active nics in the team must be vmq capable
            for the team to enable vmqs. The NxII miniport drivers require L4
            offload be disabled in order to enable vmqs. Basp will disabled
            L4 offload when HyperVMode is set, even if the miniport drivers
            have L4 offload enabled and vmqs disabled.

2. CQ59010: On Windows Hyper-V all VMs use the same NIC and MAC address as host
            team adapter 

   Problem: Basp load balances the flows from the vm's and when doing this,
            replaces the vm's mac address with the mac address of one of the
            nics in the team.

   Cause:   This is the standard method used by basp to load balance flows.

   Change:  Basp was changed to not modify mac addresses in slb teams when
            the team is configured for 1-primary, or 1-primary and 1-standby, or
            when the team's HyperVMode registry entry is set to 1 (see cq51454).

   Impact:  Impacts slb teams. L4 offload is disabled when the HyperVMode
            register is set to one.

3. No CQ:   Reduce the time for basp to detect when a LiveLink target has been
            disconnected.

   Problem: The lowest retry period is 1 second.

   Cause:   This was the requirement.

   Change:  The lowest retry period was changed to 10ms.

            The registry entry basp uses to set the interval to send probe
            packets is stored in the following registry entry.

            \HKLM\SYSTEM\CurrentControlSet\Services\
                Blfp\Parameters\{team_id}\ProbeFrequency

            This registry parameter is of type REG_DWORD. The value stored in
            this registry setting is how often basp will send a probe packet to
            the target in milliseconds. The lowest value allows is 10 (0x0a).
            If the value stored here is less than 10 or not present, basp will
            use a default value of 1000 (1 second).
            
            Also, basp changes the send probe period when the target does not
            respond within the maximum retry setting. Previous versions of basp
            always set the send probe retry period to 2 seconds. Starting with
            this basp version, the send probe retry period is set by the
            following registry entry.

            \HKLM\SYSTEM\CurrentControlSet\Services\
                Blfp\Parameters\{team_id}\ProbeRetryFrequency

            This registry parameter is of type REG_DWORD. The value stored in
            this registry setting is how often basp will send a probe retry
            packet to the target in milliseconds.  If the value stored here is
            less than 10 or not present, basp will use a default value of 1000
            (1 second).  This value applies only when the target has become
            disconnected and will remain in effect until the target is
            reconnected.  Once the target is reconnected, the probe interval is
            restored back to the value of the ProbeFrequency registry.
            
   Impact:  If the retry period is very small basp will send a lot probe
            packets. For example, on a team with two nics and two targets, if
            the period is set to 10ms, then each nic will send 200 probes per
            second, and the total number of probes sent each second for the team
            will be 400.

4. CASE#465952: Ndp storm occurs when ipv6 endpoint is on other side of an ipv6
                router

   Problem: Basp continuously send ndp packets when an ipv6 endpoint is on the
            other side of an ipv6 router.

   Cause:   Basp would would incorrectly use the ipv6 source or destination
            address instead of the target address when processing ndp packets.

   Change:  Basp was changed to use the correct set of address on inbound and
            outbound packets.

   Impact:  This change impacts slb teams with ipv6 enabled.

5. CQ50062: Erratic network utilization observed while running NTTTCP stress
            with primary port unplugged in SLB TOE teaming.

   Problem: Cpu utilization would increase and network utilization decrease
            when failing back to the primary from a standby nic on a slb team
            with L4 offloading enabled.

   Cause:   There was a race condition where a L4 offload enable oid was being
            forwarded to the miniport while it was being paused in the team. If
            the miniport was already paused, it would fail the oid. Basp would
            return the failed status to ndis which caused ndis to disable L4
            offloading.

   Change:  The L4 offload enable oid is blocked from being forwarded to a 
            miniport if it is pausing.

   Impact:  This change impacts slb teams with L4 offload enabled.

Version 1.4.15 September 9, 2011
--------------------------------

1. CQ58034: Running driver load/unload test with basp teaming causes system to
            be sluggish and eventually unresponsive

   Problem: Ndis was blocked waiting on resources to be returned when deleting
            a team. This caused the network stack to stall and become 
            unresponsive.

   Cause:   When running these scripts, it is possible for all nics in the team
            to be disabled at the same time. When all nics in a team are
            disabled, basp internally deletes the team. All resources must be
            returned to ndis when a team is deleted or ndis will stall in a
            blocked state. What caused ndis to block in this case was that
            there were some arp packets queued to be sent that were not being
            returned to ndis. Basp waits for thread a to execute to return these
            packets when deleting the team, but because ndis was blocked, the
            thread was also blocked from executing and so it could not return
            the queued packets.

   Change:  This problem was fixed by forcing all queued packets to be returned
            to ndis on the thread deleting the team and not wait for the
            potentially blocked thread to execute.

   Impact:  This problem only applies to slb team types. 

Version 1.4.14 August 22, 2011
------------------------------

1. CQ57898: BSOD occurs while performing driver load/unload for more than 100
            iterations on 57712E-A1 adapter in NPAR mode 

   Problem: The binding watchdog thread caused a bsod when accessing a team that
            had been deleted.

   Cause:   The timeout for trying to start a vnic was longer than the timeout to
            terminate the binding watchdog thread.

            A team being deleted timed out trying to kill the binding watchdog
            thread. The team could not kill the thread because the thread did
            not see the terminate signal because it was busy trying to start a
            vnic that could not be started because the nic had been unbound from
            the vnic and so there were no nics bound to it. Since the terminate
            timeout was less than the retry timeout to start the nic, the
            terminate timeout completed first and deleted the team even though
            the binding watchdog thread was still active. On the next execution
            of the thread, a bsod happened when it accessed the deleted team.

   Change:  The timeout for starting a vnic was changed to be less than the 
            timeout for terminating the thread.

   Impact:  This problem can happen with all team types, but only happens when
            disabling a team before it has completed initializing. The only know
            way of doing this is by using the devcon utility in a script. Bacs
            and the network manager serializes the enable/disable operation, and
            so this problem should not happen when using these apps to enable
            and disable a team.

2. CQ57642: There are multiple mis-spelled words in the release.txt 

   Cause:   Release.txt is not updated using an editor with a spelling checker.

   Change:  Release.txt was spelled checked using a word processor.

   Impact:  There are fewer misspelled words.

3. CQ57639: basp!round_robin_flows+7c; BSOD is seen during reboot test 

   Cause:   Basp was load balance flows when no nics in the team were ready.

   Change:  Basp skips load balancing flows when no nic in the team are ready.

   Impact:  This change only applies to slb teams that are not L4 offload
            capable.

Version 1.4.13 August 5, 2011
-----------------------------

1. CQ55262: basp!set_mif_oid_sync+62; BSOD is observed while adding an adapter
            to to a SLB team with 63 vlans   

   Problem: A bsod happens when creating a large number of vlans

   Cause:   The internal multicast address list causes an oid buffer to be
            overflowed due to the large number of multicast address that are
            needed with multiple vlans.

   Change:  The size of the internal oid buffers was increased.

   Impact:  Applies to all team types when a large number of vlans or multicast
            addresses are used.

Version 1.4.12 June 30, 2011
----------------------------

1. CQ56675: 5719 plug cable in port 0 create teaming will get incorrect MAC
            address 

   Problem: The team is assigned a mac address with a value of zero.

   Cause:   The team's mac address is not assigned until all the nics are 
            bound to the team and the vnics started. The notifier thread is
            started before the team's address has been assigned and the vnics
            started. If the link is down on a nic in the team when the team is
            created, starting the notifier thread first allows for a failover
            to happen before the team's mac address has been assigned, resulting
            in the team's mac address being set to zero.

   Change:  The notifier thread is blocked from running until after the team's
            mac address has been set.

   Impact:  This problem was introduced in version 1.4.4 for cq50755 and
            only happened on slb teams.

2. CQ55121: LACP team sometimes cannot obtain IP address when ran continuous
            reboot test. 

   Problem: Nics in  team with multiple vlans and multiple nics could end up
            being configured for different offload capabilities.

   Cause:   The offload configuration oids from different vlans were not
            serialized which could result in different configuration from 
            different vlans crossing over each other while being forwarded
            to the underlying miniport drivers.

   Change:  This problem was fixed by serializing the oids from different
            vlans.

   Impact:  This change impacts all team types and nic types.


Other changes
-------------
* Increased them minimum number of retransmissions for offloaded connections 6
  to 15. This is an attempt to allow basp to upload a connection on failover
  before the fw uploads the connection due to reaching the maximum number of
  retransmissions.

Version 1.4.11 June 7, 2011
---------------------------

1. CQ55568: The IBM Provendia Firewall software is binding to basp and ndis and
            then hangs on install.

   Problem: Basp hangs when creating a team on a system that has the IBM
            Provendia firewall software installed.
            
            This problem was reported on basp5. This is a forward port of the
            issue to basp6.

   Cause:   The IBM Provendia firewall is an intermediate driver. A circular
            binding between the firewall and the team occurs when a team is
            created that causes the process to hang.

   Change:  Added support to the basp notifier dll to detect the firewall and
            prevent it from being bound to the underlying miniports in the
            team.

   Impact:  This change is applied to all team types, but only on systems 
            that have the IBM Provindia firewall installed.

2. CQ56057: SEP with NTP causes teaming configuration to stop network traffic.

   Problem: A team could not establish network connections if it was created
            after SEP with NTP had been installed. The problem would not 
            happen when the team was created and then SEP with NTP is installed.

   Cause:   The SEP teefer2 im driver remained bound to the mp driver after the
            mp driver had been added to the team.

   Change:  Unbind the SEP teefer2 driver from the mp driver when the mp is
            added to the team by adding support for Symantec Endpoint Protection
            NTP to basp notifier dll.

   Impact:  Requires change in bacs/bmapi also to be fully effective.

Other changes
-------------
* Reduced arp cache timeout from 20 to 1 minute
* Send refresh arp/ndp for only for specific protocol used in multicast.
* Send redirection arp when flow moved on L2 load rebalance.
* Deferred oid wrapper not always freed.

Version 1.4.10 April 12, 2011
-----------------------------

1. CQ54605: Broadcom SLB team hard locks when attached to AIX and Linux network

   Problem: Windows 2008 R2 machines will remain running yet drop all
            networking.

   Cause:   Basp will enter into a very long loop when it receives a ipv6 ndp
            packet with padding.
            
   Change:  Basp was changed to correctly parse ipv6 ndp packets with padding.

   Impact:  Applies to all slb team types sending or receiving ipv6 packets.

* Added higher/lower interface ordering.
* Modified new l2 load balancing algorithm to decay flow stats more slowly

Version 1.4.9 March 7, 2011
---------------------------

1. CQ52388: Broadcom Driver 14.2.4, A04 Hyper-v issue linux os intermittent
            ping timeout.
   CQ50011: Hyper-V Quick Migration fails BASP 1.3.23

   Problem: The endianness of an ipv4 and ipv6 multicast address check was
            incorrect.

   Cause:   Software defect.
            
   Change:  The multicast address endianness was corrected.

   Impact:  Impacts slb teams only, especially when used with hyper-v and
            migrating virtual machines from one system to another.

Version 1.4.8 February 17, 2011
-------------------------------

1. CQ52388: Broadcom Driver 14.2.4, A04 Hyper-v issue linux os intermittent
            ping timeout.
   CQ50011: Hyper-V Quick Migration fails BASP 1.3.23

   Problem: Ipv6 packets would be dropped when quick migrating a vm from one
            node of a cluster to another.

   Cause:   The ipv6 address migration filter added in 1.4.7 was to narrow to
            detect the migration of an ipv6 address in all cases. 
   
   Change:  The ipv6 address migration filler was widened to detect more
            instances of a ipv6 address migration.

   Impact:  Impacts slb teams only, especially when used with hyper-v and
            migrating virtual machines from one system to another. The widening
            of the filter applies to both ipv4 and ipv6 code paths.

Version 1.4.7 February 2, 2011
-------------------------------

1. CQ51989: Update the copyright info to reflect new year 2011

   Problem: The copyright date in various basp files was 2010.

   Cause:   This is the first driver release in 2011.

   Change:  Updated the copyright date to 2011 in the various basp files.

   Impact:  Impacts release.txt, basp.sys, baspm.inf, baspp.inf, basp.dll,
            baspin.exe and baspun.exe.

2. CQ52388: Broadcom Driver 14.2.4, A04 Hyper-v issue linux os intermittent
            ping timeout.
   CQ50011: Hyper-V Quick Migration fails BASP 1.3.23

   Problem: Two basp teams on the network believe they are the owner of an
            ip address that has migrated from one system to another and each
            is trying to redirect traffic to itself, causing a connection
            failure when the traffic is directed to the system the ip address
            has migrated from.
   
   Cause:   These problems are another manifestation of the problem that
            happen when a ip address is moved from one system running basp
            to another without notifying basp that the move has occurred.

   Change:  Basp was changed to detect when an open flow with a new ip address
            has migrated to a basp team. When this is detected, basp will
            send out three arp announcement followed by an arp request for an
            ipv4 flow, or three unsolicited advertisements followed by a
            announcement to redirect traffic from all nodes on the network
            to the new location of the migrated address.

   Impact:  Impacts slb teams only, especially when used with hyper-v and
            migrating virtual machines from one system to another. Applies to
            both ipv4 and ipv6 protocols.

* Engineering Notes

1. Enabled new L2 load balancer as default algorithm.

Version 1.4.6 December 21, 2010
-------------------------------

1. CQ50454: Running Chariot with Hyper-V and teaming will cause ping time out
   CQ51026: Sawtooth: Unable to run Chariot with BASP Teaming and Hyper-V 

   Problem: Pings to/from a Hyper-V guest os will loose connectivity after
            2-60 minutes.

   Cause:   A flag used for vmq testing was incorrectly set to disable load
            balancing for slb teams configured with 1-primary or 1-primary and
            1-standby nic.

   Change:  The flag setting was corrected so that slb teams configured with
            1-primary or 1-primary and 1-standby nics are load balanced.

   Impact:  This change applies only to slb teams configured with 1 primary, or
            1-primary and 1-standby nic. This problem did not exist on the
            basp6-1.3.x branch.

* Engineering Notes

1. Changed basp.dll to not modify binding setting of Microsoft Virtual Switch
   Network Protocol.

Version 1.4.5 December 16, 2010
-------------------------------

1. CQ50011: Hyper-V Quick Migration fails BASP 1.3.23

   Problem: Another manifestation of the problem addressed in CQ45881 and
            CQ46703 in basp6-1.3.20.

   Cause:   Ndis does not notify basp when a the ip address on a hyper-v guest
            os has moved or changed.

   Change:  Basp's migrated address detection algorithm was improved to use more
            packet types to detect when an ip address has moved from the local
            station to a remote station.

   Impact:  This change apples to all slb team type. It's primary use is to
            detect when an ip address has moved from the local station to a
            remote station using the hyper-v live and quick migration features.
            This change will also detect when an ip address on the local host
            station has moved to a remote station.

Version 1.4.4 November 19, 2010
-------------------------------

1. CQ44711: Request for 5771x max offloaded connections to be distributed
            unevenly across VLANs 

   Problem: Basp currently distributes L4 offload capacity statically and 
            equally across the number of vnics in the team.
            
   Cause:   This is done to prevent oversubscription of the offload capacity,
            but may result in an under used capacity when there are vnics in the
            team with chronic light traffic.

   Change:  Basp was changed to dynamically redistribute the L4 offload
            capacity across the vnics in the team based on the current L4
            offload.
            
            This feature is disabled by default.
            
            This feature can be enabled by adding the following REG_DWORD entry
            to the registry and setting its value to 1 to enable, or 0 to
            disable.

            \HKLM\SYSTEM\CurrentControlSet\Services\
                Blfp\Parameters\ToeDynamicCapacity
 
   Impact:  This change only applies to slb teams that are L4 offload capable
            and that have more than one vnic.

2. CQ50755: Provide the ability of BASP to fix the BASP MAC address 

   Problem: A slb team's mac address can change across system reboots. 

   Cause:   Basp sets the team's mac address to the value of the mac address
            of the first nic that binds to it. Since the binding order can
            change across reboots, the team can be assigned a different mac
            address across boots.

   Change:  Basp was changed to allow the user to specify which nic in the
            team's mac address is used for the team's mac address. This can
            be done by setting the following registry variable.
            
            \HKLM\SYSTEM\CurrentControlSet\Services\
                Blfp\Parameters\{team_id}\TeamMacAddress

            This registry parameter is of type REG_BINARY and should be 6 bytes
            in length. The 6 values should match the mac address of one of the
            nics in the team. If when the system is reboot and the registry
            entry is present and it matches the mac address of a nic in the
            team, then basp will use that nic's mac address as the team's mac
            address. If no match is found, or the registry entry is not present,
            then mac address of one of the primary nics will be selected for the
            team's mac address. If no primary nic is found, then the mac address
            of the standby nic will be used.

            The following describes the caveats of using this registry parameter
            until support for it is added to bacs and baspscfg.

            The team must first be created to manually add this registry entry.
            This is because the current configuration software (bacs,baspscfg)
            delete team registry entries when creating a team and currently do
            not add this registry entry when creating a team. Once the registry
            entry has been added, the system needs to be rebooted for basp to
            read the registry entry and try to match the registry mac address
            to a nic's mac address. The registry entry will remain present
            until the team is deleted.

   Impact:  This change only applies to slb team types.

Version 1.4.3 November 11, 2010
-------------------------------

1. CQ50937: A LACP buffer leak has been detected in Basp while running
            sockdie/chariot stress with 6 vlans.  

   Problem: Static nbls were not being freeded when a team is deleted causing a
            small leak of 24k of memory every time a team is deleted until the
            system is rebooted.

   Cause:   An incomplete change made in basp6-1.3.20 caused basp to not free
            these buffers when a non-lacp team is deleted.

   Change:  These buffers are allocated for every team type, but were only
            being freed when the team type was a lacp team. Basp was changed to
            free this buffers regardless of the team type.

   Impact:  This change applies to gec and slb team types.

* Engineering Release Notes

1. Replaced using the td interface with the ip_helper interface.
2. Increased toe retry counter
3. Decreased time it takes to failover
4. Changed two oids to use vnic counters instead of mif counters

Version 1.4.2 October 13, 2010
------------------------------

1. CQ50106: BSOD occurred after teaming 63 VLANs on Win2K8 R2

   Problem: A bsod will occur when more than 64 multicast addresses are added to
            a team.

   Cause:   Basp's internal multicast table could only hold 64 multicast
            and no check was being made to make sure that the table wasn't being
            overflowed. Each vlan added its own unique multicast address which
            caused the table to be overflowed.

   Change:  The size of basp's internal multicast table was increased to 256
            entries and a check was added to make sure the table isn't
            overflowed.

   Impact:  This problem only happens on the 1.4.1 driver due to a change in
            how multicast addresses are handled in basp. The problem could
            happen with any number of vlans, but is easily seen when adding
            64 vlans since w2k8 adds a unique multicast address for each vnic
            in the team.

2. CQ50103: BACS fails to create team because the basp.sys failed to load.

   Problem: Basp loads correctly on w2k8r2, but fails to load on a w2k8 or
            w2k8sp2.

   Cause:   Basp 1.4.x supports ndis 6.20 and 6.1. The problem happened because
            basp was importing ndis 6.20 functions that are not available in
            w2k8.

   Change:  Basp was changed to not import ndis 6.20 functions on systems that
            do not support ndis 6.20

   Impact:  Applies only to the basp 1.4.x branch of the driver.

3. CQ31092: Need to support header-data splitting

   Problem: Support for tx header splitting has been in the driver for a long
            time now, however support for rx header splitting was not present
            
   Cause:   Support for rx header splitting was not present because the miniport
            drivers did not support rx header splitting until vmq support was
            added.

   Change:  Rx header splitting support was added to basp.

   Impact:  Applies only to the basp 1.4.x branch of the driver.

Version 1.4.1 October 6, 2010
-----------------------------

1. CQ50239: The statistics of bytes received and bytes sent  are wrong while
            the BASP underlying bound adapter’s TOE is enabled.

   Problem: The receive bytes displayed in Task Manager are incorrect when toe
            is enabled.

   Cause:   One of the toe receive paths was incrementing the send counter
            instead of the receive counter. This problem was introduced by the
            change for cq44794.

   Change:  Basp was changed to increment the receive counter instead of the
            send counter.

   Impact:  This problem only applies to slb teams with toe enabled. This
            problem does not happen when using legacy vlan stat reporting as
            documented in cq44794.

2. CQ49889: Add Trend Microsystem firewall to protocol list to unbind from
            miniport for BASP 

   Problem: The TMS intermediate driver is not unbound from the miniport
            driver when it is added to the team.

   Cause:   The TMS intermediate driver was not in the basp notifier dll list
            of drivers to unbind from the miniport driver.

   Change:  The TMS intermediate driver was added to the list of drivers to
            unbind from the miniport driver.

   Impact:  This change effects all team types when the TMS anti-virus software
            is installed.

Version 1.4.0 August 16, 2010
-----------------------------

1. CQ47985: E1.5: break at evbda!mm_memcmp+0x22 when running sockdie stress and
            iomonkey

   Problem: This break is caused by a kernel stack overflow. This is a similar,
            but different, problem to cq39535 fixed in v1.3.1.

   Cause:   The stack overflows is caused because the evbd is oscillating
            updating a remote neighbor address that is oscillating between two
            different mac address. The remote connection is causing the
            oscillation because it is running basp and the remote basp is
            rapidly changing the nic the flow is assigned to. The remote
            connection is changing the nic the flow is assigned because the sut
            is changing the local nic the flow is assigned to. This creates an
            unstable situation where the local and remote basp driver are
            fighting against each other to control the flow's path and
            constantly and rapidly changing the flow's path which results in a
            neighbor update and the stack overflow. A wireshark trace will show
            this as a arp storm until the bsod happens.

   Change:  Basp was changed to not delete an internal arp cache entry that
            matched the remote ip address, but had a different target mac
            address. This prevented basp from sending redirection arps when the
            target mac address changed, which could potentially start an arp
            oscillation.

   Impact:  This problem happens when a flow is established between two basp
            slb teams that each have two or more active primary nics in the
            team. 

2. CQ47988: BSOD Customer Reported issue Case 316620

   Problem: The problem is that basp is being asked to terminate an offloaded
            connection, but the offload block list does not have the basp
            context attached to it. 

   Cause:   Basp requires the miniport context to mux the offload packet to the
            appropriate underlying miniport driver in the team. Without the
            context, variables required by basp to forward the block to the
            underlying miniport driver remain initialized to null. As access
            violation is generated when basp attempts to use the null variables.

   Change:  Basp was changed to detect a null context and to return the offload
            block to ndis with the status set to success.

   Impact:  This problem has only be reproducible at the customer site. We have
            been unable to repo this problem in our lab, so this problem has
            only been white box tested during software development. This problem
            can only happen on any configuration of a slb team with toe enabled.
            Disabling toe, either in the team or globally in the system, will
            workaround the problem in current and previous versions of basp. It
            is possible that this problem will only happen on flows that are
            between two basp teams.

Version 1.3.27 September 3, 2010
-------------------------------

1. CQ48961: W2K8 R2 with BASP and Hyper-V conflict with MSFT network monitor

   Problem: Hyper-v displayed an error message when creating a virtual adapter
            from a team when the Microsoft Network Monitor software was
            installed.

   Cause:   The basp.dll did not unbind the network monitor driver from the
            miniport driver when binding it to the team.

   Change:  The basp.dll was changed to unbind the network monitor driver from
            the underlying miniport drivers when they are bound to the team.

   Impact:  This change must also be made in bmapi to be fully effective.


2. CQ49687: Basp: auto fallback is observed when fallback button is pressed
            and primary member is re-enabled

   Problem: If the fallback button is press when no primary nic is active,
            and then a primary nic is made active, the team will fallback to
            the primary.

   Cause:   This problem was introduced by the change for cq44921 in v1.3.15.
            In cq44921, basp was changed to not add the nic to the ready map
            and enable map when the standby was active in afd mode when the
            miniport driver is restarted.

   Change:  To fix this problem, basp was changed to add the miniport driver to
            the enable map when the miniport driver is restarted.

   Impact:  Cq44921 should be regression tested with this change.

Version 1.3.26 August 25, 2010
------------------------------

1. CQ48645: Ping no response when running NDIS driver load / unload. 
   CQ48569: Create SLB/GEC/LACP team configured for multiple VLANS and
            than running reboot test fail. 

   Problem: Sometimes when the team was started, pings would fail and 
            connectivity could not be established between the team and remote
            stations.

   Cause:   All ipv4 packets were being sent without a valid checksum.
            Checksum offload was disabled in the miniport driver, but enabled
            for the virtual nic. This caused ndis to not calculate the checksum
            for all packets being sent and since checksum offloading was
            disabled in the miniport, the miniport driver would also not
            calculate the checksum. This caused all packets to be sent
            without a valid checksum (the checksum was zero).

   Change:  This problem was caused because basp was forwarding the wrong
            buffer to the miniport driver with the command to disable ipv4
            checksum offloading. This was a simple coding bug that was fixed
            by correcting the code to sent the correct buffer with the correct
            command to the miniport driver.

   Impact:  This problem could happen on any team with nics that has any
            task offloading capabilities.

Version 1.3.25 August 17, 2010
------------------------------

1. CQ47985: E1.5: break at evbda!mm_memcmp+0x22 when running sockdie stress and
            iomonkey

   Problem: This break is caused by a kernel stack overflow. This is a similar,
            but different, problem to cq39535 fixed in v1.3.1.

   Cause:   The stack overflows is caused because the evbd is oscillating
            updating a remote neighbor address that is oscillating between two
            different mac address. The remote connection is causing the
            oscillation because it is running basp and the remote basp is
            rapidly changing the nic the flow is assigned to. The remote
            connection is changing the nic the flow is assigned because the sut
            is changing the local nic the flow is assigned to. This creates an
            unstable situation where the local and remote basp driver are
            fighting against each other to control the flow's path and
            constantly and rapidly changing the flow's path which results in a
            neighbor update and the stack overflow. A wireshark trace will show
            this as a arp storm until the bsod happens.

   Change:  Basp was changed to not delete an internal arp cache entry that
            matched the remote ip address, but had a different target mac
            address. This prevented basp from sending redirection arps when the
            target mac address changed, which could potentially start an arp
            oscillation.

   Impact:  This problem happens when a flow is established between two basp
            slb teams that each have two or more active primary nics in the
            team. 

2. CQ47988: BSOD Customer Reported issue Case 316620

   Problem: The problem is that basp is being asked to terminate an offloaded
            connection, but the offload block list does not have the basp
            context attached to it. 

   Cause:   Basp requires the miniport context to mux the offload packet to the
            appropriate underlying miniport driver in the team. Without the
            context, variables required by basp to forward the block to the
            underlying miniport driver remain initialized to null. As access
            violation is generated when basp attempts to use the null variables.

   Change:  Basp was changed to detect a null context and to return the offload
            block to ndis with the status set to success.

   Impact:  This problem has only be reproducible at the customer site. We have
            been unable to repo this problem in our lab, so this problem has
            only been white box tested during software development. This problem
            can only happen on any configuration of a slb team with toe enabled.
            Disabling toe, either in the team or globally in the system, will
            workaround the problem in current and previous versions of basp. It
            is possible that this problem will only happen on flows that are
            between two basp teams.

Version 1.3.24 July 21, 2010
----------------------------

1. CQ none : 

   Problem: When the nic with the team's mac address is disabled and enabled,
            a switch will not know what mac address to associate on the port of
            nic that temporarily held the team's mac address.

   Cause:   The team's mac address is moved to another active nic in the team
            when the nic currently assigned that address is disabled or
            disconnected. The team's mac address is later moved back to this nic
            when it is enabled or connected. This can cause switches to not know
            what mac address to associated with the port that the team's mac
            address was moved from.

            Basp sends ctp frames on the nic that the team's mac address is
            moved to so as to notify the switch that the team's mac address is
            now on another port. However, basp did not send ctp frames on the
            nic that the team's mac address was moved from, and so the switch
            did not know what mac address was attached to that port. When the
            team's mac address is moved, the flows are rebalanced and some flows
            might be redirected to the nic that no longer has the team's mac
            address, using that nic's original mac address. Since no ctp frame
            was sent on this nic, the switch doesn't know what port to forward
            packets with this address to, and so the switch forwards these
            packets to all ports on the switch.

   Change:  To fix this problem, Basp was changed to also send ctp frames on the
            nic that the team's mac address was moved from with that nic's new
            mac address if the link is connected, or when it becomes
            connected/enabled if it is disconnected/disabled.

   Impact:  This change applies to slb teams with two or more primary nics. It
            also applies to teams with 3rd party nics even though the team's mac
            address does not move for this team type. To see this problem,
            sufficient time must be allowed for the switch to age the mac
            address from its internal cache before failing back to the nic that
            originally held the team's mac address.

2. CQ48977: basp!ipv4_select_outbound_arp+cd;BSOD is seen during reboot test 

   Problem: A basp BSOD is seen during a driver reboot test.

   Cause:   Basp accessed an iflow data structure after another thread had
            freeded the data structure.

   Change:  The iflow data structure should only be accessed while holding a
            spinlock. Instead of wrapping the access with a spinlock, basp was
            modified to get the data from another data source that does not
            require holding a spinlock.

   Impact:  This problem existed only with slb teams and could happen with
            either the ipv4 or ipv6 protocols.

Version 1.3.23 May 21, 2010
---------------------------

1. CQ47870: BSOD 0x50 during committing modified team configuration while
            running iperf stress 

   Problem: Basp caused a page fault bsod when processing the oid
            OID_GEN_NETWORK_LAYER_ADDRESS.

   Cause:   The bsod was because ndis pass mal formed data in the oid. This
            is a bug in the microsoft software.

   Change:  The data in the oid is mal formed only when the address count
            in the oid data is greater than one. Basp was changed to ignore
            this oid when more than one address is passed in the oid.

   Impact:  This problem would happen on all team types when configuring the 
            team for multiple ipv4 address. 

Version 1.3.22 May 10, 2010
---------------------------

1. CQ47618: break at bxnd60a!new_tcp_state+0x269 after disabling all the
            primary adapters in AFD team

   Problem: A divided-by-zero fault occurs in the miniport drivers when failing
            over to a toe capable standby nic from a toe capable primary nic.
            The failover must be due to a link-loss event on the primary nic.
            The problem does not happen when the failover is due to the primary
            nic being disabled.

   Cause:   The toe offload parameters were not being forwarded to the standby
            nic because it was not active. The miniport driver then used zero as
            the values for the offload parameters, which caused the
            divide-by-zero fault.

   Change:  Basp was changed to forward the toe offload parameters to both
            active and inactive toe capable nics in the team.

   Impact:  This problem happens on link-loss failover of slb teams with toe
            capable primary and standby nics.

Version 1.3.21 May 5, 2010
--------------------------

1. CQ47339: BSOD occurred after teaming SLB/livelink enabled on Win7x64
            and Vistax64. 

   Problem: A bsod will happen with livelink is enabled and a ipv6 probe
            target is selected.

   Cause:   This problem was introduced by change 1. in v1.3.20. The packet
            buffer allocated for the probe packet is to small and a memory
            access fault happens when basp attempts to create a ipv6 probe
            packet. 

   Change:  The size of the packet buffer allocated was increased for ipv6
            probe packets.

   Impact:  This problem only happens on slb teams with ipv6 probe targets.

2. CQ47349: Hyper-V BASP: X64_0xD1_basp!MiniportInitiateOffload+112 break in
            BASP driver when unloading ndis driver.

   Problem: Same problem as documented in basp6-1.3.14 #1 below.

   Cause:   Ndis was offloading a connection when no nics are ready.

   Change:  Basp was changed to not resume L4 offloading when no nics are ready.

   Impact:  This change only applies to slb teams with L4 offloading enabled.

3. CQ47517: BASP BSOD (Customer Reported issue (Case#312821)

   Problem: Basp has bugchecked while processing a set
            OID_GEN_NETWORK_LAYER_ADDRESSES oid.

   Cause:   The network address count or network address length fields in the
            oid are zero. When these fields are zero, the network address
            field is invalid and should not be dereferenced. Basp was 
            dereferencing this field due to a bug in the msft 'c' compiler.

   Change:  Additional checks were added to basp to check if these fields are
            zero.

   Impact:  This is a bug in the msft compiler that will cause a bsod when
            the length of a IP, IPX or NetBios address is zero, or the length
            of the address list is zero. This bug can happen with all team
            types.

4. CQ47119: MS Driver Verifier Bugchecks on BASP Driver 

   Problem: Basp will bugcheck when running driver verifier on a team with 
            multiple vnics and one of the vnics in the team is disabled and then
            reenabled.
   
   Cause:   Basp acquired a spinlock raising the irql to dispatch. Basp then
            called NdisEqualString. NdisEqualString should only be called when
            the irql is passive. The driver verifier detected this and generated
            a bugcheck.

   Change:  Basp was changed to not call NdisEqualString and instead perform
            its own comparison of the the stings.

   Impact:  Impacts all team types running with multiple vnics in the team.

5. There is a 30 to 60 second delay when deleting a team.

   Problem: Basp delays 30-60 seconds when a team is deleted. Note that a team
            is deleted when all nics in the team are disabled, or all vncis in
            a team are disabled, or when the team is actually deleted in bacs.
   
   Cause:   Multiple threads basp created are terminated after the team has
            been removed from the team list. Because the team is not in the
            list, the thread notifier is not be able to detect when a thread
            has been terminated and signal the termination routine. The thread
            termination routine never receives the thread termination signal
            and consequently timesout after waiting 30s.

   Change:  Basp was changed to terminate all thread before the team is removed
            from the team list.

   Impact:  This change may impact the timing of scripts that delete teams.


Version 1.3.20 April 21, 2010
-----------------------------

1. CQ46921: Broadcom LACP teamed to Cisco Nexus

   Problem: Lacp teams will not connect to a Cisco Nexus switch.

   Cause:   Basp was sending lacp control packets with padding.

   Change:  Basp was changed to not pad lacp control packets. Also, this same
            packet padding issue was found to exist on probe packets and so
            this change was also applied slb teams using probe packets.

   Impact:  This change impacts lacp teams and slb teams using live link. The
            lacp problem was only seen Cisco Nexus switches. There was no 
            reported problem with slb live link teams, but the change was
            applied anyway to preempt possible problems where a Cisco Nexus
            switch is used as a probe target and it could reject a probe
            packet due to excess frame padding.

2. CQ45881: Loss of connectivity between VMs after reboot and live migration
   CQ46703: W2K8 R2 with Hypervisor and Teaming losses network connectivity
            under teaming 

   Problem: Change 1. in 1.3.19 did not verify. 

   Cause:   Change 1. in 1.3.19 was not detecting when an ip address had moved
            in all cases.

   Change:  The ip address move detection algorithm was modified to detect
            additional use cases.

   Impact:  This change applies to all slb team types.

Version 1.3.19 April 1, 2010
----------------------------

1. CQ45881: Loss of connectivity between VMs after reboot and live migration
   CQ46703: W2K8 R2 with Hypervisor and Teaming losses network connectivity
            under teaming 

   Problem: Live migrating a vm from one node to another in a Hyper-V cluster
            resulted in the vm losing connectivity.

   Cause:   The os does not notify basp that the ip/mac address pair has moved
            to a different node in the cluster. When running basp on both nodes,
            this resulted in both nodes thinking they owned the ip,mac address
            pair. Both nodes would then send out redirection arps which resulted
            in traffic targeted to ip address being sent to the wrong node in
            the cluster.

   Change:  Basp was changed to detect when an ip address had moved from one
            system to another.

   Impact:  This change applies to all types of slb teams, and both ipv4 and
            ipv6 protocols. This change also applies to not only hyper-v
            migration, but whenever a ip address is moved from one system on
            the network to another.

2. Dynamically changing the mac address of a Hyper-V vm would result in loss of
   connectivity.

   Problem: Dynamically changing the mac address of a Hyper-V vm would result in
            loss of connectivity.

   Cause:   Basp was not updating one of its internal tables with the new mac
            address of the vm. 

   Change:  Basp was change dto detect when the mac address of a vm had changed.

   Impact:  This change applies to all types of slb teams, and both ipv4 and
            ipv6 protocols.

Version 1.3.18 March 23, 2010
-----------------------------

1. CQ46155: W2k8 disable & then enable of a virtual adapter takes over 90
            secs to occur (but not in W2k3)

   Problem: There is a 90 second delay to a nic becoming active when a 
            disabled nic in the team is reenabled.

   Cause:   The basp dll will bind the NDIS Lightweight Filter driver,
            ndiscap.sys, to the underlying miniport driver when a nic in the
            team is disabled. When the nic is later enabled, the LWF driver will
            wait 90s for an application to bind to its upper edge. This delay
            also delays binding the miniport driver to team, which is why the
            nic does not become active for 90s. 

   Change:  The basp dll was changed to not modify the binding for the
            NDIS Lightweight Filter driver when a nic is added or deleted
            from a team.

            This fix will only prevent the problem from happening if it has not
            yet happened. If the problem still occurs after basp has been
            upgraded, it may still be required to run bindview (available for
            free in the msft wdk) and manually unbind the LFW from all miniport
            drivers.
            
            This problem can also be fixed by setting the value in the
            following registry entry to 1.

            \HKLM\System\CCS\Services\ndiscap\Start

   Impact:  This change impacts all team types on system that have the 
            Microsoft NDIS Lightweight Filter driver installed.

Version 1.3.17 March 09, 2010
-----------------------------

1. CQ46288: basp!miniport_offload_process+0x4e BSOD

   Problem: A bsod could occur when running the driver load/unload test.

   Cause:   There was a race condition in the driver that would cause basp to
            not wait for all L4 offloads to be uploaded when the link was lost
            for all nics in the team while the team was being deleted. A bsod
            could later occur when the offloaded connections were uploaded
            after the team had been deleted.

   Change:  Basp was changed to wait for all connections to be uploaded when
            the team when there is no link.

   Impact:  This change only impacts TOE capable teams.


2. CQ44794: W2K8 does not have same VLAN Statistics in Task Manager as W2K3 

   Problem: The statistics presented in Task Manager are different from W2K3
            vs W2K8. In W2K3 each VLAN is identified with their own statistics
            but in W2K8, each VLAN shows the aggregate of all the VLANs 

   Cause:   Basp calculated the statistics for each vlan in the team by 
            querying each underlying miniport driver in the team and summing
            the results.
   
   Change:  Basp was changed to maintain it own set of packet counters for
            each vnic in the team and use these values when queried for the
            statistics.
   
            For customers desiring use the legacy method to show the vlan
            statistics, the following registry key has been created.
       
            [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Blfp\
            Parameters] "LegacyVlanStats"=dword:00000001

            Adding this key and setting it to 1 will configure basp to report
            vlan stats using the legacy method.  Deleting the key or setting it
            to 0 will enable the new statistic reporting method.

   Impact:  This registry key is global and its setting applies to all teams. The
            registry key is deleted when any team is deleted. After adding the
            registry key, the system must be rebooted for the change to take
            effect.

Version 1.3.16 February 10, 2010
--------------------------------

1. CQ45637: Bug check 0xD1 - basp!alloc_block_context 

   Problem: A bsod occurred when the system performed a chimney offload to basp.

   Cause:   The offload request from the stack was incomplete and did not
            contain all the information required to setup the offload. The
            driver assumed incorrectly that this was an illegal request and
            could not happen and consequently caused an illegal memory 
            reference when attempting to defrerence data that was not present.
 
   Change:  Basp was modified to detect this situation and obtain the info
            needed to complete the chimney offload from other sources within
            the driver.

   Impact:  This bug has been in the driver since version 1.0. Since this is
            the first detection of this bug, it happens very rarely. This bug
            only happens on slb team that are capable of performing L4 
            offload. This bug can be worked around on older drivers that do
            not have this fix by disabling chimney offloading in the system.

2. Multiple zombie baspin.exe process exist

   Problem: Multiple zombie baspin.exe process exist in systems where teams 
            have existed.

   Cause:   The basp notifier (basp.dll) was not closing some handles after
            creating the baspin.exe process. This prevented the baspin.exe
            from terminating and created zombie processes.

   Change:  The process and thread handles are closed immediately after the
            baspin.exe process is created.

   Impact:  This problem happens on all team types whenever a team is created.
            Rebooting the system will kill the zombies, but they will quickly
            be recreated.

Version 1.3.15 December 21, 2009
--------------------------------

1. CQ44921: In a SLB-AFD team, traffic is observed on both the primary and
             stand-by adapter simultaneously

   Problem: In a SLB-AFD team, traffic is observed on both the primary and
            stand-by adapter simultaneously, while bacs indicates only the
            primary is active.

   Cause:   Nics were being incorrectly added to the ready map when enabled.
 
   Change:  Nics are not added to the ready map when the standby is active
            and afd is enabled.

   Impact:  While this change only applies to afd teams, the code is executed
            on all failover/failback events.

2. A primary nic is disabled when a afd team with live link is created.

   Problem:  When an afd team with live link is created, one of the primary
             nics in the team could come up disabled even though the nic
             had a link and path to the target.

   Cause:   The pnp restart and probe threads were not synchronized.
            Occasionally, the probe thread would execute in the middle of the a
            pnp restart. The pnp restart thread was trying to enable the nic,
            but the probe thread would disable the nic because it could not
            resolve the target address. This resulted in the nic coming up
            disabled and remaining disable until the nic was disabled/enabled in
            the Network Connection Manager.
 
   Change:  A new state was added to the probe finite state machine to pause
            the state machine when the underlying nic is not in the running
            state. This effectively synchronizes the pnp and probe threads.
            
   Impact:  Only happens on on afd live link team types and usually only when
            the number of retries is low, eg. 1.

3. CQ45018: Indicate BASP Team Link Speed as the Sum of the Team Members

   Problem: Basp would by default indicate the team's link speed as the 
            highest link speed of a single nic in the team. Basp could be
            reconfigured by the user to indicate the aggregate link speed of
            all the active load balancing nics in the team using a registry
            key defined below in this document.

   Cause:   Displaying the hightest link speed of a sing nic in the team
            instead of the aggregate link speed was a marketing requirement.

   Change:  The default configuration of basp was changed to display the
            aggregate link speed of the team. The user can now override
            this behavior to display the highest link speed of a single nic
            in the team using the same registry key and values as before.

   Impact:  This change applies to all team types.

Version 1.3.14 December 11, 2009
--------------------------------

1. CQ44796: BSOD occurred while passing sockdie L4 traffic to SLB-AFD team and
            disabling Ndis driver to cause failover 

   Problem: Basp performed a L4 offload operation using a null handle. 

   Cause:   The L4 operation was performed using a null handle because the nic
            had been disabled while there still outstanding L4 offload
            connections. There were still L4 offload connections because the
            underlying miniport driver did not complete uploading all the
            offloaded connections within 1 minute. This caused basp to timeout
            while waiting for the upload to complete and close the nic while
            there were still connections offloaded. The connections were
            later uploaded by the miniport driver which then caused a bsod
            because the handle was no longer valid.
 
   Change:  Basp's internal upload timeout timer was changed from 1 minute.
            to 5 minutes.

   Impact:  This change only applies to slb teams with L4 offloading enabled.

2. CQ44593: Virtual adapters disabled after SUT resumes from sleep states.

   Problem: The fix for cq44203 broke this functionality (v1.3.13, #1). 

   Cause:   Oids required to enable the vnic when transitioning from the sleep
            state were blocked and not being processed.

   Change:  Do not block oids when a vnic is disabled and do not turn 
            offload encapsulation off when a vnic is disabled if offload
            encapsulation is enabled on any vnic that is enabled.

   Impact:  Requires regression testing of cq44203.

Version 1.3.13 October 22, 2009
-------------------------------

1. CQ44203: In a team with multiple vlans, when 1 of the vlans is disabled,
            unable to ping the teams ip address 

   Problem: Teams with multiple vnics would lose connectivity when one of the
            vnics in the team was disabled.

   Cause:   Ndis sends an oid to basp to disabled checksum offloading on the
            vnic that is being disabled. Basp would forward this this oid to
            the underlying minport drivers who would then disable checksum
            offloading. This would disable checksum offloading on all vnics in
            the team. The problem was that ndis expected checksum offloading to
            still be enabled on the remaining vncis and so ndis would send
            packets with a zero checksum expecting the miniport driver to
            calculate the correct checksum. However, since checksum offloading
            had been disabled, the miniport would not calculate the checksum
            and depending on the driver, would either fail the send (NxI) or
            send the packet with a zero checksum (NxII). This caused the packet
            to be rejected by the receiver and resulted in a loss of
            connectivity.

   Change:  When disabling a vnic, ndis first pauses the vnic and then disables
            offloading. Basp was changed to not forward oids received for a 
            vnic that is in the paused state while there are other active
            vnics.

   Impact:  This change impacts any team type that has more than one vnic and
            is offload capable. 

Version 1.3.12 October 15, 2009
-------------------------------

1. CQ44118: When a team gets deleted, "Client for MS Networks" and "File and
            Printer Sharing for MS Networks" remain unbound to the adapter 

   Problem: Shared printer and files cannot be accessed when a nic is removed
            from the team unless the user manually checks the "Client for MS
            Networks" and "File and Printer Sharing for MS Networks" boxes in
            the properties page for the nic.

   Cause:   The basp installer was disabling these services when the team was
            deleted.

   Change:  The basp installer no longer disables these services when the team
            is disabled.

   Impact:  This problem is localized to the basp installer which only
            executes when a team is created or deleted. No other basp
            components have changed from the previous version.

Version 1.3.11 October 2, 2009
------------------------------

1. Memory leaks when all nics in a team are disabled.

   Problem: There is a small memory leak that rarely happens when all nics in
            a team are disabled at the same time.

   Cause:   When all nics in a team are disabled while basp is attempting to
            send a list of locally generated nbls, the nbl are discarded and
            returned to ndis. The problem is that nbls are discarded as one
            list, but the ndis call can only handle a single nbl per call. This
            causes nbls in the list to leak.

   Change:  Basp was changed to loop and call ndis with a single nbl when
            discarding locally generated nbls.

   Impact:  This problem is rarely reproduced, but could happen on slb and lacp
            team types. It will not happen in GEC teams.

Version 1.3.10 October 1, 2009
------------------------------

1. CQ43889: X64_0x7E_basp!set_mif_oid_sync+d7 running Chariot Stress w/Failover
            & Failback Helper DLL 

   Problem: Basp bug checked when using windiag to perform a failover test.
            
   Cause:   The call to NdisOpenAdapterEx failed when reenabling a nic. On the
            failure code path, basp would attempt to forward an oid to the nic
            that failed to open. Since the open had failed, the handle to the
            nic was null which caused a bugcheck when ndis dereferenced it
            during the OidRequest.
            
   Change:  Basp was changed to not forward the oid when the handle was null.
   
   Impact:  This change applies to all team types.

2. CQ43827: System unresponsive after WEB and File stress 
   CQ43868: Lost IP-configuration after LAN-stress on BX620S4 with W2K8 R2
            installed 
   CQ43930: X64_0x0_bxnd60a+549e assertion hit running Chariot Stress w/failover 

   Problem: The system would become unresponsive and various system operations
            would not complete successfully after running long term stress tests
            with basp.
            
   Cause:   There was a memory leak in basp when local nbls were returned to
            ndis.
            
   Change:  The memory leak was fixed.
   
   Impact:  This problem was first introduced in the basp6-1.3.x branch. It is
            not present in the basp6-1.2.x branch.

Version 1.3.9 June 30, 2009
---------------------------

1. CQ42257: Add Support for McAfee Host Intrusion Protection Server to BASP
            Helper DLL 

   Problem: Customer's using McAfee's Host Intrusion Protection Server (HIPS)
            report that their SLB team does not work correctly after reboot when
            the HIPS software is installed. If the user manually disables the
            HIPS intermediate driver from the NIC hardware and only allows it to
            bind to the BASP Virtual NIC then the system works as expected.
            This request is to modify the BASP helper DLL to automatically
            unbind the HIPS driver from the BASP controlled NICs. 
            
   Cause:   The Basp Notifier Object (basp.dll) did not unbind HIP from the
            underlying miniport driver when a nic is added to the team. 
            
   Change:  Supported was added to the Notifier Object to remove the binding
            to the HIP driver when a nic is added to the team.
   
   Impact:  Effects all team types when a team is created or a nic is added to
            the team and HIP has already been installed. Support also needed to
            be added to bmapi, and so the correct version of bmapi is required
            to full support this feature.

2. CQ38832: NWLink Netbios protocol still bound to adapter when team is created

   Problem: NWLink Netbios protocol does not get unbound from an adapter when a
            team is created with that adapter. All protocols and services,
            except Broadcom Advanced Server Program Driver, should be unbound
            from the adapter when said adapter is part of a team. In the failing
            scenario, ipx/spx, ipv4, and ipv6 protocols get unbound, it's only
            the NWLink protocol that remains bound along with client for MS
            network, File and printer sharing for MS networks.  Issue is not
            seen when ipx/spx is not installed in system. 
            
   Cause:   The Basp Notifier Object (basp.dll) did not unbind NWLink Netbios
            from the underlying miniport driver when a nic is added to the team. 
            
   Change:  Supported was added to the Notifier Object to remove the binding
            to the NWLink Netbios driver when a nic is added to the team.
   
   Impact:  Effects all team types when a team is created or a nic is added to
            the team and NWLink Netbios has already been installed. Support
            also needed to be added to bmapi, and so the correct version of
            bmapi is required to full support this feature.

Version 1.3.8 June 18, 2009
---------------------------

1. CQ36892: Tx Packet counter does not increment for the TOE Team. 

   Problem: Basp returns the internal L2 Basp counters to BACS. These counters
            do not included the L4 counters. 
            
   Cause:   This was working as designed.
            
   Change:  Basp was changed to query the underlying miniport drivers in the
            team for both the L2 and L4 counters and return the sum of these
            counters for the team's counters for BACS requests.
   
   Impact:  Impacts all team types.

Version 1.3.7 June 15, 2009
---------------------------

This version was recalled.

Version 1.3.6 June 8, 2009
--------------------------

1. CQ40679: Chariot error CHR0245/200 are observed running IPv6 Hi-Perf traffic
            to GOS 

   Problem: IPv6 connections could not be established or were being dropped in
            a Hyper-V Guest OS.
            
   Cause:   Basp was not indicating IPv6 packets using the source mac address
            of the Guest OS.
            
   Change:  Basp was changed to properly mux IPv6 packets.
   
   Impact:  Changes applies only to IPv6 L2 and L4 traffic when Basp is bound
            to Hyper-V. 

2. Unable to connect to a remote station from a Hyper-V GOS after a period of
   inactivity in the team.

   Problem: The GOS establishes a connection to a remote station, but after a
            period of inactivity in the GOS, connections can no longer be made
            to any remote station that is not a vm.
            
   Cause:   Basp retires the source mac address of the GOS after a period of 
            inactivity. When the smac was reactivated due to new activity, its
            smac was updated to an incorrect value.
            
   Change:  Basp was changed to reactivate the smac using the correct address.
   
   Impact:  Impacts L2 and L4 slb teams running Hyper-V. 

3. A bsod can happen on failover or when a nic is deleted from the team.

   Problem: There is a race condition in basp that could cause it to return
            offload blocks that have been initiated and completed after a
            nic has been removed from the team in a failover.
   
   Cause:   Basp waits for any offloads that have been initiated to complete
            before failing over. However, basp was not waiting for the
            completed offloads to be indicated (returned to ndis) before
            continuing with the failover. This can cause a bsod if the offloads
            are indicated after the failover has completed and the nic removed
            from the team.

   Change:  Basp now waits for offloads initiated that have completed to be 
            indicated before continuing with the failover.

    Impact: Applies to slb teams that support L4 failover.

Version 1.3.5 May 8, 2009
--------------------------

1. CQ38160: Need Event log notice when LiveLink detects loss of connection

   Problem: No message is logged by LiveLink the connection to the target
            system changes.
            
   Cause:   Messages were only logged when the physical link status changed.
            
   Change:  LiveLink now logs a message to the event log whenever the 
            connection to the target system changes.
   
   Impact: This change only applies to LiveLink teams.

Version 1.3.4 May 1, 2009
--------------------------

1. Added L4 Offloading support for Hyper-V in W2k8 R2 / Win7 

   Problem: W2k8 R2 / Win7 added L4 offloading support to Hyper-V 

   Cause:   This was a new feature added to the os.

   Change:  L4 offloading is now supported in any Hyper-V environment.

   Impact:  This change effects SLB teams running on an os that supports L4
            offloading in Hyper-V.

Version 1.3.3 April 9, 2009
---------------------------

1. CQ40268: Basp6: Team mode does not change when the stand-by adapter is active
            in AFD team type

   Problem: The team mode displayed in bacs remains set to "primary" after a
            failover on a SLB-AFD team type with LiveLink enabled.

   Cause:   A standby flag was not being set in the SLB-AFD LiveLink FSM. BACS
            uses this flag to display the team mode and since basp never changed
            the flag for this team type, BACS never changed the displayed team
            mode.

   Change:  The SLB-AFD LiveLink FSM was modified to set this flag correctly.

   Impact:  This change only effects SLB-AFD LiveLink teams.

2. Hyper-V allows VLAN tags when vlan tagging is disabled on a nic in the team.

   Problem: Hyper-v would allow a vlan id to be assigned to the untagged vnic
            when one or more of the nics in the team had vlan tagging disabled.

   Cause:   Basp always allowed vlan pass-through tagging on the untagged vnic.

   Change:  Basp now disables vlan pass-through tagging on the untagged vnic
            when tagging is disabled on any of the nics in the team.

   Impact:  This change only applies to Hyper-V teaming.

3. The team mtu size will not increase when changing the nics mtu size in BACS
   or using the advanced properties page.

   Problem: The system would have to be rebooted or the team deleted and
            recreated to increase the mtu size after a team with multiple nics
            had been create.

   Cause:   Basp only allowed the mtu size to decrease dynamically.

   Change:  Basp now restarts the team when it detects that the mtu size of the
            team has changed.

   Impact:  This change applies to teams where all the nics in the team support
            jumbo frames.

4. Basp did not support the maximum number of multicast addresses supported by 
   BRCM 5771x 10 GbE nics.

   Problem: Basp supported a maximum of 32 multicast addresses, while 5771x nics 
            support a maximum of 64 multicast addresses.

   Cause:   Basp's internal multicast array only supported 32 multicast
            addresses.

   Change:  Basp's internal array size was increased to support 64 multicast
            addresses.

   Impact:  This change applies to all team types where more than 32 multicast
            addresses are required.

5. A BSOD could happen on a failover.

   Problem:  Basp would BSOD when dereferecing a null handle representing the
             underlying miniport when failing over.
   
   Cause:    There was a logic bug in the code where an AND operation was used
             instead of an OR operation. This could cause basp to exit the pause
             routine before the worker thread had completed one full execution
             cycle. When this happened, it was possible for basp to close the
             underlying nic before all the resources had been returned from the
             nic. When the resources were later returned, basp would bugcheck
             when dereferecing the handle for the underlying miniport which was
             now null because the nic had been closed.

   Change:   The AND operator was changed to an OR in the pause routine. This
             change forces basp to wait for one complete cycle of the worker
             thread to execute and return all the resources for the underlying
             nic before closing the nic.

   Impact:   The pause function is executed on failover for all team types.

Version 1.3.2 March 18, 2009
----------------------------

1. CQ39951, CQ34900: Add VLAN pass-through capabilities to BASP 

   Problem: External applications such as Hyper-V were not allowed to manage
            vlan ids in basp. Only BACS was allowed to configure the vlan ids
            used by basp.
           
   Cause:   Basp managed all vlan id's internally and would override any vlan
            ids configured by external applications.

   Change:  A vlan id pass-through mode was implemented in basp for the
            untagged vnic. This allows external applications to manage vlan ids
            on the untagged vnic if desired. Tagged vnics are still managed
            internally by basp and so external applications are still not
            allowed to manage the vlan ids on tagged vnics.

   Impact:  Impacts tagged and untagged vlans for all team types, both with and
            without Hyper-V.

2. CQ39174: Opening a TCP connection with chimney enabled causes page fault in
            basamd64.sys

   Problem: The minport driver will bsod when requested to configure L4
            offloading while it is being disabled.
           
   Cause:   This problem was logged against basp5, but an analysis of basp6
            showed that there was a very small window where basp could forward
            an oid to an underlying miniport driver that had just been closed
            by basp. 

   Change:  Basp now prevents oids from being forwarded to an underlying
            miniport driver when it is being unbound from the team.

   Impact:  This change applies when teams are created or deleted or a nic is 
            hot-added or deleted from the team.

Version 1.3.1 February 18, 2009
-------------------------------

1. CQ39535: Causes NLB cluster to ARP flood network if a remote host pings
            cluster 
 
   Problem: When a basp team in an nbl cluster was arp'ed by another basp team,
            the basp arp/ndp state machine became unstable and oscillated
            sending arps on the network until the machine was reset or the team
            deleted.
             
   Cause:   Basp would receive arp replies to fixup arp that had a different
            source mac address in the ethernet header than the original arp.
            This caused basp to re-arp using the new source mac address,
            wherein the reply to this arp would be with a different source mac
            address, and the process would repeat ad nauseam.

   Change:  Throughout this process, the source mac address in the arp/ndp would
            remain constant, and so basp was changed to use this field instead
            of the volatile address in the ethernet header.

   Impact:  This change applies only to slb teams, and to both ipv4 and ipv6
            protocols.

Version 1.3.0 February 9, 2009
-------------------------------

1. CQ39953: Add multiple load balancing nic support to SLB teams running with
            Hyper-V.
 
   Problem: Basp SLB teams only supported a one primary, or one primary with
            one standby configuration when running with Hyper-V.
   
   Cause:   Hyper-V assigns each guest os a unique mac address. Hyper-V uses
            this mac address to demux receive frames to the appropriate guest
            os. However, Basp always indicated receive frames using the team's
            mac address. This caused Hyper-V to demux all receive frames to the
            parent os instead of to the appropriate guest os, causing a loss of
            TCP connectivity in the guest os.
   
   Change:  Basp was changed to set the mac address of each received frame to
            the mac address of the appropriate guest os.

   Impact:  This change applies to all slb team types, regardless of whether
            Hyper-V is running.
   
   Caveat:  Basp Hyper-V SLB team only supports the TCP/IP protocol. Frames
            received using other protocols, such as IPX, will not be routed to
            the correct guest os. Basp slb teams running without Hyper-V will
            still have limited support non-TCP/IP protocols however.

Version 1.2.10 October 30, 2008
-------------------------------

1. CQ38199: Basp causes BSOD when adding VNIC to Hyper-V Guest OS
 
   Problem: Basp would cause a BSOD when transmitting a ICMPv6 packet that is
            shorter than an ICMPv6 neighbor discovery packet.
   
   Cause:   The BSOD was caused by basp traversing beyond the end of the mdl
            list and dereferencing a null pointer in the code added to fix
            cq38060 in v1.2.9 

   Change:  Basp was changed to validate the pointer before dereferencing.

   Impact:  The changes made to basp apply to both the ipv4 and ipv6 code paths
            for all team types.

Version 1.2.9 October 24, 2008
------------------------------

1. CQ38060: HyperV crashes when using a BASP team
 
   Problem: The crash dumps attached to the cq shows that the bsod is caused by
            an illegal memory access when basp tries to access the ipv4 header
            in an outbound packet.
   
   Cause:   Basp assumed that ethernet and ipv4 headers are in the same mdl. In
            this case however, the headers were split and the ethernet header
            was in a different mdl than the ipv4 header. When basp tried to read
            the ipv4 header, the read extended beyond then end of the mdl and
            caused an access violation and the bsod.

   Change:  Basp was changed to traverse mdls when attempting to read ipv4, ipv6
            and arp headers. Basp already had this capability for other header
            types it accessed, such as tcp/udp headers, and so this was not
            changed.

   Impact:  The root cause of this problem was in basp's parsing of split
            headers, Currently, split headers have only been seen on a
            customer's network running a combination of hyper-v virtual machines
            with clustering. The changes made to basp apply to both the ipv4 and
            ipv6 code paths for all team types.
            
Version 1.2.8 October 8, 2008
-----------------------------

1. CQ37696: The 64th BASP Virtual adapters always shows "not load" in BACS3
 
   Problem: Basp would not start the 64th vnic in a team.
   
   Cause:   There was a bug in basp that caused it to start only 63 vnics.

   Change:  Basp was changed to initialize up to 64 vnics.

   Impact:  This change applies to all team types with the maximum number of
            vnics. The maximum number of vnics is 1-untagged and 63-tagged vnics
            for a total of 64 vnics.

2. Optimized send discard path for improved performance.

   Problem:  Send performance could be degraded because of multiple ndis calls to
             discard packets when failing over.

   Cause:    Basp was returning each discard packet individually.
   
   Change:   Basp was changed to collect all discarded nbls and return them in
             one call.

   Impact:   Basp failsover quicker when sending packets is interrupted by a
             failover event.
                       
Version 1.2.7 September 24, 2008
--------------------------------

1. CQ37189: Does not wake from S4 with 64 VLANS 
 
   Problem: Restarting 64 vlans can take a long time, 2 minutes or more
            depending on the network traffic being received by the team.
   
   Cause:   On this network, there were multiple unconfigured iscsi stations
            broadcasting arps with a source ip address of 0.0.0.0. Basp
            processed these arps as normal arps. Because there were multiple,
            different, stations sending these arps, basp detected that ip
            address 0.0.0.0 had moved to a different mac address.  This caused
            basp to do an expensive delete/add/inbound redirection operation
            whenever it detected that ip address 0.0.0.0 had moved to a new nic.
            Basp was performing this operation frequently which further
            increased the restart time. This gave the appearance that the system
            had hung because it did not awake in the expected amount of time.

   Change:  This problem was fixed by adding a filter in basp to not add arp and
            ndp packets to basp's internal cache when the source ip address of
            these packets is zero. Basp was changed to indicate these packets to
            the os, but not add them to its internal cache.

   Impact:  This change only applies to slb teams on networks with unconfigured
            iScsi nics.

2. CQ37174: CHR0245 while running randomIO HiPerf script on RX only 

   Problem: New L4 traffic from the target was being incorrectly redirected to
            a different nic causing existing L4 flows offloaded on another nic
            to fail and cause a 245 error.

   Cause:   Entries in basp's internal arp cached we're being aged to quickly on 
            a 1-primary, 1-standby nic team, causing the entry to be
            prematurely deleted from the arp cache. When this happens, new flows
            to the same target can be assigned to a different nic in the team.
   
   Change:  To fix this problem, basp was changed to increased life of arp cache
            entries and prevent premature aging out of entries in teams with
            1-primary and 1-standby nic.

   Impacts: This change only applies to slb teams with 1-primary and 1-standby
            nic in the team.

3. CQ35559: Mismatch in jumbo mtu size for team and team members.

   Problem: The maximum size of the team was 9000, while the 57710 is capable of
            sending frames that are 9600 bytes long.

   Cause:   The 57710 is the first nic capable of supporting this frame size.
   
   Change:  The maximum size mtu size was changed from 9000 to 9600.
            The team's mtu size is set to the smallest mtu size supported by all
            the nics in the team.

   Impact:  This change mainly applies to teams with 57710 nics that are using
            jumbo frames.

4. CQ34714: Task manager shows wrong link max speed for teaming adapter.
    
   Problem: Basp reports the team's link speed as the highest link speed of all
            the nics in the team instead of the aggregate link speed.
            
   Cause:   This behavior is a marketing requirement.
   
   Change:  For customers desiring to show the aggregate link speed of the team,
            a new registry key was added. The registry key to enable basp
            reporting the aggregate link speed of all ready nics in the team is
            as follows.
       
            [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Blfp\
            Parameters] "AggregateLinkSpeed"=dword:00000001

            Adding this key and setting it to 1 will enable aggregate link speed
            reporting. Deleting the key or setting it to 0 will enable the
            current behavior.
            
   Impact:  This registry key is global and its setting applies to all teams. The
            registry key is deleted when any team is deleted. After adding the
            registry key, the system must be rebooted for the change to take
            effect.

5. CQ37106: BSOD is observed while passing L4 sockdie_stress traffic while
            causing traffic to failover

   CQ37165: Assert occurred while passing L4 sockdie traffic to SLB with
            6 vlans

   CQ37503: Assert occurred while adding 5708 to Everest team with chariot
            traffic

   This is a port of a problem found in basp5

   Problem: Basp would indicate an offload initiate connection complete or
            return an nbl using a null handle while unbinding a nic from the
            team.
   
   Cause:   #1 There was a race condition in basp that allowed a nic to be
            unbound and the handle nulled while a toe connection was still
            offloaded.

            #2 Receive nbls were being returned after all the connections
            had been terminated

   Change:  #1 Removed the race condition to guarantee all toe connections
            have been uploaded before unbinding a nic from the team.

            #2 Wait for all nbls to be returned after all connections have
            been uploaded before unbinding a nic from the team.

   Impact:  This problem only happens on toe capable teams when unbind a nic from
            the team.

6. CQ35133: Broadcom teaming driver isn't passing traffic to VMs (Hyper-V)

   Problem: Hyper-V would not receive frames when bound to tagged vnic in basp.
   
   Cause:   Received tagged vlan traffic was being indicated to Hyper-V with the
            vlan tag. This caused Hyper-V to discard the frame since it thinks
            it's bound to an untagged vnic.

   Change:  The vlan tag is cleared before indicating the frame to the os.

   Impact:  Impacts vnics bound to Hyper-V for all team types.

Version 1.2.6 July 24, 2008
---------------------------

* Basp was not correctly deleting duplicate IPv6 flows in its internal cache.
  Duplicate entries can occur when a remote IP address is assigned to another
  nic, or when communicating with another load-balancing team. This may result
  in the load-balancing algorithm not balancing IPv6 flows correctly across the
  team.

* Basp was sending internally generated packets with to much padding. All
  internally generated packets were being sent as 128-byte packets instead of
  their correct size. These didn't seem to cause any problems as the receiving
  stations appears to ignore the extra padding.

* Fixed a problem where Basp was not advertising support for
  OID_TCP6_OFFLOAD_STATS and OID_IP6_OFFLOAD_STATS even though it does support
  these oids.

Version 1.2.5 July 11, 2008
---------------------------

* CQ36288: BASP6 - IA64 : BSOD occurred after teaming w/ livelink enabled on
  Win2k8 IA64. A buffer was being passed to basp with unaligned data.  When basp
  accessed the data, a BSOD occurred. This problem was fixed by declaring this
  data as unaligned. This problem only occurs when LiveLink is enabled on some
  IA64 systems and has no impact on x86 or amd64 platforms.

Version 1.2.4 July 9, 2008
--------------------------

* Optimized send and receive code path to improve performance.

Version 1.2.3 July 2, 2008
--------------------------

* Added RSS support. Unlike offload capabilities, RSS support is not calculated
  dynamically as nics in the team are disabled/link-down or enabled/link-up.
  Instead, RSS support is calculated statically based on the capabilities of the
  current set of nics in the team. This set of nics includes the standby nic if
  it is present.

* Fixed a bug that caused the team to be non-functional when a system is booted
  and all the nics in the team have been disabled except the standby.

Version 1.2.2 June 2, 2008
--------------------------

* CQ35552: BASP6-can't create team and blscreen under 2K8-IA64 system. A buffer
  was being passed to basp with unaligned data. When basp accessed the data, a
  BSOD occurred. This problem was fixed by declaring this data as unaligned. This
  problem only impacts some IA64 systems and has no impact on x86 or amd64
  platforms.

Version 1.2.1 May 21, 2008
--------------------------

* CQ35017: Have Baps6 unbind QoS packet scheduler from adapter when added to a
  team. The name for this cq is inaccurate. It should be something like "Rebind
  QoS Packet Scheduler to adapter when uninstalling basp using baspun while a
  team exists". This problem is the same as CQ33298 fixed in 1.1.0, except it
  applies t the "QoS Packet Scheduler" instead of the "Link-Layer Topology
  Discovery Mapper I/O Driver". It has been fixed in the same manner as CQ33298
  and has the same restrictions and limitations.

* CQ35020: The change made in 1.1.3 did not verify. Rewrote a portion of the
  pnp event handler to reduce the number of times number times basp requested
  ndis to renumber a the bindings, as extra reenumeration requests seems to
  confuse ndis. I could find no other problems in basp that would cause the
  problem reported. These changes also entailed reworking the Bonus Fix so that
  it once again operational.

Version 1.2.0 May 7, 2008
-------------------------

* Added IPv6 load balancing and failover support. This includes the following
  features.

  - IPv6 Outbound load balancing for SLB, LACP and GEC teams
  - IPv6 Inbound load balancing for SLB teams
  - IPv6 Checksum offload
  - IPv6 Large send offload (LSOv2)
  - IPv6 Connection offload (TOE/Chimney)
  - IPv6 LiveLink (probe packets)

Version 1.1.3 May 7, 2008
----------------------------

* CQ35020: No more than one VLAN can be added to a team in BACS3. Basp was
  trying to re-enable a vnic from a global pnp event, while the os was disabling
  the vnic through MiniportHaltEx. Once this happened, the vnic could not be
  enabled. The fix for this problem was to not reenable a vnic on global pnp
  events. This entailed removing the Bonus Fix in 1.1.0.

Version 1.1.2 April 10, 2008
----------------------------

* CQ34643: Basp.inf file has incorrect version displayed in properties. The
  wrong version in inf. Will bump version to 1.1.2 and re-release everything.
  Only the version number has changed, nothing else.

Version 1.1.1 April 1, 2008
---------------------------

* CQ34215: Int 2ch assertion when running sockdie on SLB w/FOLB team when the
  debugger was attached to the sut. If the system was booted with debugging
  disabled, the system would hang. The int 2c/system hang occurred because basp
  deadlocked when two basp threads simultaneously attempted to acquire the same
  two spinlock, but in reverse order. This problem should only occur on slb
  teams. This problem was fixed by merging the two spinlocks into a single lock.

* Fixed two problems where arps may not be sent when the system is in a low
  resource condition.

Version 1.1.0 February 25, 2008
-------------------------------

* CQ33298: When bacs is uninstalled with team present, Link-Layer I/O driver and
  Responder remain unbound to adapter. The "Link-Layer Topology Discovery Mapper
  I/O Driver" and "Link-Layer Topology Discovery Responder" are two new
  protocols that are now available in Vista/LH. BACS was recently changed to
  support these protocols, such that when it creates a team, it unbinds these
  protocols on the underlying miniport, and when it deletes a team, it rebinds
  these protocol to the underlying miniport driver. The problem was that when
  basp is uninstalled, binding process is controlled by the co-installer
  (basp.dll), not BACS, and the co-installer had not been modified to support
  these new protocols. This problem was fixed by adding support for these two
  protocols to the co-installer.

  There are two points I'd like mention regarding this issue. The first point is
  that both BACS and the co-installer always rebind these protocols to the
  underlying miniport driver when a team is deleted or basp is uninstalled. This
  means that even if these protocols were unbound to the miniport when the team
  was created, they will end up being bound to the miniport when the team is
  deleted. This is how BACS and the co-installer have always behaved towards all
  the protocols they support, e.g. IPv6, and so this is just a caveat I wanted to
  point out -- BACS and the co-installer do not necessarily restore the bindings
  to the original settings before the team was created. The second point is that
  there is a third new protocol in Vista/LH named "Reliable Multicast Protocol"
  that has the same set of issues as found with the LLT protocols. I have added
  support for this protocol in the co-installer. Support for this protocol was
  also added to BMAPI, so make sure you're using the latest version of
  BACS/BMAPI.

* CQ31578: BSOD occurred when testing mixed mode (L4/L2) teaming in LH-32. The
  BSOD occurred because Basp was asked to terminate a connection that was not
  offloaded. The retail version of Basp assumes a connection is offloaded when
  requested to terminate a connection and will access an internal connection
  context data structure. This context doesn't exist if the connection isn't
  offloaded and results in a BSOD when Basp tries to reference it. Note that the
  checked version of Basp does validate the offload context and generates an
  assertion in this same scenario. I believe this is a bug in Ndis since it
  should only terminate connections that have been offloaded successfully. This
  problem was worked around by failing terminate offload requests on connections
  that haven't been offloaded.

* CQ33540: BASP6 SLB team exhibits lower performance with L4 enabled. This
  problem was caused because Linux endpoints with two nics were used without
  enabling arp filtering. Without arp filtering, linux sends arps on both nics
  (google "arp flux") which confused basp's load balancer. This would result in
  the flows becoming unbalanced - more flows on one nic than another - and
  reduce network performance of the team. With arp filtering enabled on the
  endpoints, Linux only sends arps using the nic that is a member of the same
  broadcast domain as the arp. This allowed basp to correctly map an IP address
  to a MAC address and balance the flows on the nics, which fixed the problem.

  A bug was also found in basp that would still allow two arp cache entries with
  the same ip address, but different mac address to be stored in the cache (see
  bullet #6, v1.0.8). This bug only occurred when using Linux endpoints with arp
  filtering disabled, but it also contributed to the flow imbalance and the
  performance problem. This bug was fixed by searching for duplicate IP
  addresses in the arp cache when adding a new arp entry and deleting the
  existing entry if found and by itself will reduce, but not eliminate, a
  performance reduction when using Linux endpoints with arp filtering disabled.

* CQ33648: Unable to use SLB teamed adapter on NLB cluster. While halting a
  vnic, Ndis returned success on an unbind request from basp, but never actually
  performed the unbind. When this happened, Ndis would never reinitialize the
  vnic. The fix was for basp to wait 20s for the unbind to occur and if it
  doesn't, retry the unbind operation. 

* BONUS FIX: Basp had a long standing issue where if one vnic in a muli-vnic
  team was disabled, all the vnics in the team had to be disabled before it could
  be re-enabled. This problem was fixed as part of the research for cq33648.

Version 1.0.8 January 8, 2008 
-----------------------------

* CQ33060: SUT locks up when running sockdie stress L4 traffic on a SLB
  (2 vlans)with 2 5708c. The miniport driver indicated an unexpected
  RESET_START status which caused basp to try and pause the nic and failover the
  connections to another nic. The problem was that the status was indicated a
  high IRQL, but the pause function must run at a low IRQL. This caused basp to
  hang. Basp was changed to call the disconnect function instead of the pause
  function which can run at IRQL <= DISPATCH_LEVEL.

* Increased the maximum mtu size to 9000 to support jumbo frames. The mtu size
  is still set to the smallest mtu size of all the nics, so all nics in the team
  must have their mtu size set to greater than 1500 so support jumbo frames.
  This currently will not work if you hot add a nic with a mtu size less than
  the current mtu sized used by the team.

* Improved transmit performance on systems where the number of cpus is less than
  the number of nics in the team. When sending packets, some nics would always
  be serviced first causing the remaining nics to be cpu starved. A round robin
  algorithm was implemented to provide equal transmit servicing of all nics in
  the team.

* Improved L2 and L4 receive performance by batch processing nbls indicated with
  the resources flag set.

* Eliminated temporary redirection of traffic to the primary on target system
  when a broadcast arp is sent. This change will reduce the number of
  out-of-order packets received from the target of the broadcast and the number
  of retransmissions required.

* Fixed problem when remote system reassigned its ip address to another nic.
  This usually resulted in multiple cache entries for the same ip address and
  would cause problems with redirecting inbound traffic.

Version 1.0.7 November 23, 2007
-------------------------------

* CQ32653: BASP6 1.0.6 BSOD during sleep stress tests. Basp was stuck in an
  infinite loop waiting for the miniport to wake-up. 

Version 1.0.6 November 8, 2007
------------------------------

* CQ31635: BSOD occurred when adding untagged vlan to existing team with 4 NX2
  with 4 Vlans. This problem was caused by the unbind operation not completing
  from withing the MiniportHaltEx routine. When the last vnic is deleted, all
  the nics are unbound and the team data structure is freed. If the unbind
  operation then occurs after the MiniportHaltEx has exited, a BSOD will occur
  when the team data structure is dereferenced because it is no longer
  allocated. This problem was fixed by delaying the deletion of the team data
  structure until all unbind operations have completed.

* CQ32254: Team(s) is/are inactive when you create multiple teams. Basp assumed
  the nic will generate a status indication when given a pnp restart command.
  This does not always happen. Basp was changed to query the link status of the
  underlying nic when given a pnp restart command. 

* Reduced number of packets discarded when disabling a nic by added delay to the
  pnp pause function to allow in-transit packets to arrive.

* Fixed spinlock imbalance.

Version 1.0.5 November 2, 2007
------------------------------

* CQ31449: Traffic does not load balance in AFD team on the 2nd adapter after
  a fallback event.

* Fixed problem where all the vnics in a LiveLink team remain disabled after a
  vnic is deleted from the team.

* Fixed BSOD caused when Basp receives a status change after the team has been
  deleted.

* Fixed a race condition where Basp would attempt to send a probe packet on an
  underlying nic that was just closed.

Version 1.0.4 October 29, 2007
------------------------------

* CQ31853: Team still active when it doesn't have vlan, but livelink vlan is
  set, probes retried are shown.

* CQ31845: Fixed problem where AFD LiveLink would not fallback to a primary when
  the standby nic was disconnected.

* Fixed problem with AFD LiveLink where the primary would not be enabled when
  connected after the standby nic has been disconnected.

* Fixed problem with AFD LiveLink where when creating a team, the team would
  come up with the AFD standby nic active.

* Fixed problem where SLB team would incorrectly respond to gratuitous ARP
  REPLYs.

Version 1.0.3 October 12, 2007
------------------------------

* Implemented AFD LiveLink.

Version 1.0.2 October 10, 2007
------------------------------

* CQ31506: Testing failover in SLB, eventually TOE connections will drop 
  off to 0. Packets were being dropped on failover causing some of the sockdie
  sessions to hang. Basp was changed to not drop packets when an underlying nic
  is disabled and there are other active nics in the team.

* CQ31635: BSOD occurred when adding untagged vlan to existing team with 4 NX2
  with 4 Vlans. Basp was being called with a PnP event after the team had been
  deleted. The PnP event handler now checks that the team hasn't been deleted
  and locks if from being deleted until the PnP event completes.

* Fixed memory leak that occurred when nics are added after the first mif.
* Fixed error handling unwind when adding a nic failed.

Version 1.0.1 September 14, 2007
--------------------------------

* CQ29621: Team remains inactive after removal of NX2 adapter from team
  while passing traffic. Under heavy traffic, Ndis will fail the call to
  NdisIMInitializeDeviceInstanceEx to initialize a vnic. Basp was modified
  to retry initializing the vnic until successful or 60 seconds had expired,
  at which time it will fail the vnic initialization. Previous versions of
  Basp would only attempt to initialize the vnic one time.

Version 1.0.0 September 14, 2007
--------------------------------

* CQ31406: LACP teams are not active. Nics in a LACP team were not able to
  send or receive PDUs to the switch due to nic being treated as not ready.
  The fix is to add special code to handle probe disconnect differently than
  media disconnect. 

* CQ31369: BASP6 primary version number must be greater than 0. The version 
  number was changed to 1.0.0.

* CQ31411, CQ31409: A primary nic receives packets when the standby nic in an
  AFD team is active. An oid call to set the mac address of a nic was failing
  when binding the nic to the team.  This could cause the nic to have the wrong
  address and receive packets it wasn't suppose to receive (among other things).
  This problem happened because the nic was in the wrong state (OPENING) and
  blocking the oid call to set the nics mac address. When a nic is in the
  OPENING state, oids will not be forwarded to it. The fix was to move the state
  change to the PAUSED state up a couple of statements to just before setting
  the mac address.  Oids calls are allowed when in the PAUSED state and this
  allowed the oid call to pass through successfully.

Version 0.1.9 September 12, 2007
--------------------------------

* CQ31291: BSOD in Vista x64 while running sleep stress and common scenario
  stress in HCT. The BSOD was caused by basp sending a packet using a nic in the
  team that was in a low power state. Basp was changed to not send packets on a
  nic until the nic has indicated the link is up and Ndis has indicated that the
  nic is the running state. 

* CQ31283: System BSOD during boot with iSCSI. A race condition between BASP
  initialization in DriverEntry and the handling of protocol binding calls was
  causing access to a uninitialized variable. The initialization sequence in
  DriverEntry was reordered to avoid race condition.

* Fixed legacy bug that caused BSOD when Basp was requested to send a packet when
  no nics were ready.

Version 0.1.8 August 30, 2007
-----------------------------

* CQ31067: Chariot error 202 is observed when non-active stand-by adapter is
  disconnected. Flows were being rebalanced when the link status changed for any
  nic in the team. Modified basp to rebalance when the ready_map is changed (the
  ready_map doesn't include the standby nic unless the team is in a failover
  state).

* CQ30952: Disable/re-enable VLANs, the VLANs remain inactive. The fix for this
  bug added in 0.1.7 resulted in teams being disabled when a new team was
  created. The team was became disabled because Ndis was pausing each nic in the
  team and later restarting it, but Basp did not have support for the restart
  request. Added additional capability to Basp to restart existing nics when
  requested to do so by Ndis.

* Add send nbl coalescing to improve performance.

Version 0.1.7 August 28, 2007
-----------------------------

* CQ30952: Disable/re-enable VLANs, the VLANs remain inactive. Add check for
  NetEventIMReEnableDevice in ProtocolNetPnpEvent().

* Added code to zero out the team's task offload capabilities if the team
  does not support task offload.

Version 0.1.6 August 27, 2007
-----------------------------

* Fixed a bug where basp would drop unacknowledged tcp packets on a connection
  that was being offloaded.

* Support for split protocol headers added.

Version 0.1.5 August 21, 2007
-----------------------------

* CQ30669 - Turn off LSO functionality in Basp6 when a 3rd party adapter is
  present. This is a feature request.

* The number of L4 offload connections was not being divided and distributed
  across the vnics in the team. This resulted in an over subscription of L4
  offload connections and caused basp to fail L4 offload initiation requests.
  Basp was changed to equally distribute a team's L4 offload capabilities
  across all vnics in a team.

* INF cat file failed signability test with "DriverVer missing or in incorrect
  format in \baspm.inf" and "DriverVer missing or in incorrect format in
  \baspp.inf" error. The inf files were changed so the month and day have a
  leading zero if necessary and are always two digits long.

* CQ30843 - Traffic is not load balanced in a LACP team. The team traffic
  statistics were not being collected properly.

* CQ30741 - Traffic fails to offload back to adapter after it has been
  disabled/re-enabled. The team traffic statistics were not being collected
  properly.

Version 0.1.4 August 2, 2007
----------------------------

* CQ29885 - LSO does not increment after traffic fails over to stand-by
  member in a SLB/AFD with NX1 or NX2 adapters. The team link and offload
  capabilities were not being recalculated when failing back from a standby nic.

* CQ29773 - Traffic does not fallback in a AFD team when the stand-by adapter is
  disconnected. Fixed corner case where link status was not being indicated
  properly when falling back to primary on a AFD team.

Version 0.1.3 July 31, 2007
---------------------------

* CQ30562 - Link speed is 8Gbps when all adapters disconnected. Fixed a bug in
  the link speed calculation when no nics in the team are ready.

* CQ30376 - BSOD when running sockdie stress with TOE. A memory structure was
  being accessed after it was freed too early.

* CQ30417 - Non-IPv4 connection loss on failover. Non-IPv4 traffic is only
  supported on teams that have all Broadcom nics. The NxI nice i/f changed that
  caused basp to think it was not a Broadcom nic.

* CQ30419 - BSOD when toggling chimney enable. The context area for nbl's was
  being freed to early which caused a bugcheck when basp tried to access the
  context.

* CQ30404 - BSOD on failover with TOE. A handle in the offload block was not
  being restored when the underlying miniport driver failed an offload request.

Version 0.1.2 July 11, 2007
---------------------------
* Fixed divide by zero error when enabling/disabling 5708 in connection manager.
* Fixed bugcheck caused when last nic in team is disabled and ndis tried to
  offload an L4 connection.  

Version 0.1.1 July 10, 2007
---------------------------

* CQ30123 - Low throughput on LACP teams. Corrected problem with LACP state machine
  not processing packets properly.

* CQ30116 - LSO does not function on LACP teams. Corrected problem with team
  capabilities not being advertised properly on LACP teams.

* CQ30240 - Link speed of zero reported on LACP teams. Corrected problem with
  link speed not being calculated on LACP teams.

* CQ30405 - Basp indicates aggregate link speed for team. Basp was modified to
  indicate the highest link speed of a single nic as the team's link speed.

* The nbl context memory was being freed after initiating an L4 offload 
  connection. This could cause any number of problems with L4 teaming.

Version 0.1.0 July 2, 2007 - FEATURE COMPLETE
---------------------------------------------

* Added basic TOE offloading support.

Version 0.0.6 June 18, 2007
---------------------------

* Fixed the IOCTL interface used by BACS. This interface was broken on Vista/LH
  and consequently BACS had limited, but usable, functionality. This version of
  basp and a new version of BACS/BMAPI restores complete functionality.

* Added basic TOE offloading support. This feature is still being developed and
  should not be tested. The purpose of including it in this release is to test
  for any side effects it may have introduced to L2 teaming.

* Added support for generic trunking and 802.3ad trunking.

Version 0.0.5 May 17, 2007
--------------------------

* There is a race condition in basp 0.0.4 that occurs when a team is deleted or
  when a nic is removed from the team (which will cause the team to be deleted)
  that causes a bug check.

  When a team is deleted, the unbind routine terminates all threads and waits for
  a signal that the threads have terminated. The threads generate the signal just
  prior to calling PsTerminateSystemThread. They have to do this before the call
  to PsTerninateSystemThread because this call doesn't return. If the signal
  arrives a the unbind routine before PsTerminateSystemThread terminated.

  DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (ce)
  A driver unloaded without canceling timers, DPCs, worker threads, etc.

  This problem was fixed by registering a notify routine for when the thread is
  really terminated using the PsSetCreateThreadNotifyRoutine  and
  PsRemoveCreateThreadNotifyRoutine calls.

Version 0.0.4 May 15, 2007
--------------------------

* Added support for Probe Packets (LiveLink)
* Added support for NxII nics
* Added support for LsoV2

Version 0.0.3 May 01, 2007
--------------------------

* Basp would sometimes hang when deleting a team or disabling a nic using the
  Network Connections Manager. The OS would remain operational, but a hard reset
  was required to for Basp to recover. This happened because Basp would not
  return receive net buffer lists after a vnic was paused prior to shutting
  down.

Version 0.0.2 May 01, 2007
--------------------------

The following feature have been added.

* L2 Task Offloading (LsoV1, XSUM)

Version 0.0.1 April 05, 2007
----------------------------

Pre-Alpha Release of Basp Ndis 6.0 for Vista/Longhorn. This release provides a
pre-view of Basp for Vista/Longhorn with basic SLB teaming functionality only.
The following features are supported.

* Install/Uninstall Basp on Vista/Longhorn
* Create/Delete one or more SLB teams
* Create/Delete one or more VNICS
* Add/Remove one or more primary NICs in team 
* Add/Remove optional standby adapter
* L2 Inbound/Outbound load balancing
* Failover/Fallback supported
* Tagged/Untagged Vlans are supported
* Hot add/delete NICs to teams
* Auto-fallback Disable supported
* Enable/Disable team member in Network Connection Manager supported
* Supports Broadcom Ndis 6.0 driver w. NICs >= 5703.

The following features are not available with this release.

* LiveLink
* FEC/GEC
* LACP
* L2 Task Offloading (LSO, XSUM)
* L4 Connection Offloading

The following features may work, but haven't been tested

* Third Party NICs
* MSVS
* Blade Servers
* IA64, AMD64 platforms

